В этот день


i

Тyшите свет

14.05.2013 в 13:30

q a 51670Тyшите свет20.07.2019 в 22:06 m

                                         14 Мая

1948 г. 65 лет назад Было провозглашено государство Израиль
Положение в стране было крайне нестабильным, практически кризисным, и британское правительство было вынуждено передать решение палестинской проблемы в руки Организации Объединенных Наций. 29 ноября 1947 года Генеральная Ассамблея ООН большинством голосов # 33 против 13 # приняла резолюцию о разделе Палестины на два государства. 14 мая 1948 года, в день, когда истекал срок британского мандата, Давид Бен Гурион на заседании в Тель-Авивском Музее зачитал Декларацию Независимости нового государства, получившего официальное название # Мединат Исраэль (государство Израиль).

                              

 14 мая 1878 года название «вазелин» было запатентовано в США как торговая марка и торговый знак. Всем известное косметическое и лечебное средство изобрел и запатентовал эмигрировавший в Америку английский химик Роберт Чезбро. В этом изобретении ученому «помогли» нефтяники.


 Маргарита Валуа (королева Марго), дочь Генриха II и Екатерины Медичи, родилась 14 мая 1553 года. С малолетства девочка отличалась редкостной красой, независимым нравом и # очень рано # пристрастием к любовным приключениям. Молва приписывает ей любовников чуть ли не с одиннадцати лет.




i

Тyшите свет

27.05.2013 в 19:40

q a 51670Тyшите свет27.05.2013 в 19:40 m
                                                     27 Мая

 27 мая 1606 г. 407 лет назад В Москве началось восстание против польских интервентов. Казнен Лжедмитрий I.Начало 17 века для Руси было сложным. Рост феодальной эксплуатации привел к резкому ухудшению положения крестьян. Неурожай привел к голоду и болезням, население массами умирало, а правящие классы безудержно спекулировали хлебом. Крестьянское волнение все возрастало. В 1604 году в поход на Москву двинулся Лжедмитрий I # Григорий Отрепьев, выдававший себя за сына царя Ивана IV Грозного. Появление самозванца совпало с моментом крайнего ослабления власти Годунова, и особой ненависти бояр к царю. Заговор против Русского государства, организованный в Речи Посполитой, смыкался с боярским заговором в Москве против Годунова. Когда в апреле 1605 года царь скончался, Москва присягнула его сыну # Феодору, но молодой царь вскоре был убит. И на русскую землю, поддерживаемый польским войском, уже вступал Лжедмитрий. Остатки царских войск перешли на сторону поляков, и в июне 1605 года Лжедмитрий во главе польского отряда вошел в столицу, а через месяц венчался на царство.



 27 мая 1703 г. 310 лет назад Петр I заложил Петропавловскую крепость. Эта дата стала днем основания Санкт-Петербурга.С 1700 года Россия вела войну со Швецией за выход в Балтийское море. К лету 1703 года были отвоеваны земли в устье Невы, для защиты которых от нападения шведов здесь было необходимо закрепиться. Захваченную крепость Ниеншанц посчитали недостаточно пригодной для этого, место для новой крепости выбрали на острове Енисаари (с финского # Заячий), откуда прекрасно просматривались входы в рукава Невы из Финского залива. 27 мая 1703 года на Заячьем острове Петром I состоялась закладка крепости, с которой начался город Санкт-Петербург # первый русский порт на Балтийском море. Назван город в честь апостола Петра. Возглавлял строительство А.Меншиков, ближайший помощник царя. Считается, что чертеж этой первой земляной крепости принадлежит самому Петру I, а математический расчет плана выполнил французский фортификатор Ламбер. Крепость строили солдаты, пленные шведы и крепостные крестьяне, которые посылались от каждой губернии. Постройка дерево-земляной крепости была завершена в октябре 1703 года. Отмечали это событие и в Москве, и на берегах Невы. Однако после сильного наводнения часть земляных валов была разрушена. Поэтому к середине 18 века крепость была «одета» в камень.



 27 мая 1795 г. 218 лет назад Основана первая государственная общедоступная библиотека в России # Императорская публичная библиотека, одно из крупнейших книгохранилищ мира.Российская национальная библиотека Санкт-Петербурга # старейшая государственная библиотека страны, вторая по величине фондов в России, одно из крупнейших в мире информационно-библиографических учреждений, российский центр научно-исследовательской и научно-методической работы в области библиотековедения, библиографии и книговедения. 27 мая 1795 года Указом императрицы Екатерины II была создана Императорская публичная библиотека и национальное книгохранилище. Тогда же Екатерина II высочайшим повелением одобрила представленный архитектором Е.Соколовым проект здания библиотеки, строительство которой началось в июне 1795 года. Это было первое в России здание, предназначенное именно для библиотеки. Место было выбрано в центре столицы, при пересечении улицы Сенной (Большой Садовой) с Невским проспектом, недалеко от императорского дворца и вблизи оживленного Гостиного двора.



 27 мая 1905 г. 108 лет назад Начало Цусимского сражения, которое стало последней решающей битвой в Русско-японской войне.усимское сражение # одно из трагических сражений в истории российского флота # морская битва в Японском море между флотами России и Японии, начавшаяся 27 мая 1905 года и продолжавшаяся 2 дня в Цусимском проливе. Сражению предшествовал тяжелый переход русских кораблей из Балтийского моря на Дальний Восток длиной 18 тысяч миль (33 тыс. км). Японский флот имел преимущество в бронировании, эскадренной скорости и мощности артиллерийского огня. Кроме того, оборонная промышленность России выпускала снаряды, в 10-15 раз уступавшие по фугасному действию японским. Цусимское сражение стало крупнейшим сражением эпохи додредноутного броненосного флота, в котором российская 2-я эскадра Тихоокеанского флота под командованием вице-адмирала Рожественского потерпела сокрушительное поражение от Императорского флота Японии под командованием адмирала Того.



 27 мая 1930 г. 83 года назад Американец Ричард Дрю запатентовал прозрачную клеющуюся ленту # скотч.Скотч # разновидность липкой ленты на целлофановой основе, на одной из сторон которой нанесён клей. «Scotch» и «Scotch Tape» # зарегистрированные торговые знаки корпорации 3M. В 1923 году Ричард Дрю устроился на работу в компанию Minnesota Mining and Manufacturing (сейчас название этой корпорации 3M), которая занималась производством наждачной бумаги, вела исследовательскую деятельность в области водонепроницаемых поверхностей и экспериментировала с целлофаном. В 1925 году компания тестировала по магазинам и автосервисам свою новую шкурку «Wetordry», и Ричарду было поручено следить за этим процессом. Как-то раз в автомастерской он заметил, что при покраске кузовов в месте, где поверхность нужно было покрасить двумя или более цветами, разделительные линии получались неаккуратно. Мастерам это не нравилось, и Дрю пообещал что-нибудь придумать. Через некоторое время Ричард действительно принёс маляру клейкую ленту шириной 2 дюйма (5 см) с пластырем на каждом краю. При испытаниях эта лента скукожилась из-за некоторых недоработок. На процесс усовершенствования ушло около 5 лет # только в 1930 году первый рулончик «шотландской» целлофановой ленты с успехом прошел испытания.



 Мария Васильевна Шукшина родилась 27 мая 1967 года в Москве. Старшая дочь актера, режиссера и сценариста Василия Шукшина и актрисы Лидии Федосеевой-Шукшиной. В кино Маша была почти «с пеленок». В 1969 году в возрасте полутора лет она снялась в киноновелле «Братка», в 5 лет # в фильме отца «Печки-лавочки», в 7 лет # в фильме режиссера С.Никоненко «Птицы над городом». После окончания факультета переводчиков Института иностранных языков им. Мориса Тореза она работала переводчицей и брокером на Российской сырьевой бирже. В последующие годы Мария снялась еще в нескольких кинолентах, но переломным моментом в жизни стал 1995 год, когда она получила приглашение на роль Оли в фильм Петра Тодоровского «Какая чудная игра» и снялась в лирической мелодраме «Американская дочь» режиссера Карена Шахназарова.



 Дмитрий Донской великий князь Московский и Владимирский (1368-1389) 20 октября 1350 # 27 мая 1389.Дмитрий (или Димитрий) Иванович Донской, сын Ивана II, родился (12) 20 октября 1350 года в Москве. Его отец умер рано, и Дмитрий стал Великим князем владимирским и московским на десятом году жизни, с 1359 года, под опекунством Митрополита Алексия. В княжение Дмитрия Донского Москва утвердила свое руководящее положение в русских землях. Опираясь на возросшую мощь Московского княжества, Дмитрий Донской преодолел сопротивление соперников в борьбе за великое княжение суздальско-нижегородского, рязанского и тверского князей. При нём в 1367 году был построен первый каменный кремль в Москве, в 1368 и 1370 годах его войска отразили нападения на Москву литовского князя Ольгерда. Во время войны с Тверью Дмитрий Донской в 1375 году принудил тверского князя к признанию своего старшинства и союзу в борьбе с Золотой Ордой. Он был крепок, высок, плечист и грузен, имел черную бороду и волосы, притягательный взгляд. Житие сообщает, что Дмитрий отличался благочестием, незлобивостью и целомудрием. В 1376 году Московское княжество утвердило своё влияние в Болгарии Волжско-Камской, в 1378 году его рать разбила под Скорнищевом рязанского князя. Дмитрий Донской первым из московских князей возглавил вооружённую борьбу народа против татар: в 1378 на реке Вожа было разгромлено татарское войско Бегича, а в 1380 году Дмитрий Донской во главе объединённых русских сил разбил в Куликовской битве войска татарского темника Мамая, за что был прозван Донским.






дополнено в 20:40
  Никколо Паганини итальянский скрипач и композитор 27 октября 1782 # 27 мая 1840.Никколо Паганини родился 27 октября 1782 года в Генуе, в семье мелкого торговца, любителя музыки. Первоначальные навыки игры на мандолине и скрипке приобрёл под руководством отца. Брал уроки у нескольких учителей и старательно занимался самостоятельно. Уже в 11 лет концертировал в Италии, а с 16 и в других европейских странах, завоевав мировую славу. Своеобразная внешность Паганини навевала «демонические образы», а романтические эпизоды его биографии породили фантастические легенды о нём. Католическое духовенство преследовало Паганини за антиклерикальные высказывания, за сочувствие карбонариям. Новаторство Паганини # одно из ярких проявлений музыкального романтизма. Он произвёл переворот в исполнительском скрипичном искусстве, обогатив и расширив возможности инструмента. В свои скрипичные пьесы Паганини ввёл новые колористические и технические эффекты. Николо широко использовал весь диапазон инструмента, игру на одной струне, технику двойных нот, pizzicato, флажолеты. Паганини умер 27 мая 1840 года в Ницце. Некоторые произведения мастера долгое время после его смерти считались неисполнимыми из-за их трудности. Виртуоз-гитарист, Паганини написал также около 200 пьес для гитары. Исполнительское и композиторское творчество оказало большое воздействие на последующее развитие инструментальной музыки. С 1954 года в Генуе ежегодно проводится Международный конкурс скрипачей имени Паганини.


i

Тyшите свет

28.05.2013 в 08:05

q a 51670Тyшите свет28.05.2013 в 08:05 m
                                                   28 Мая

 28 мая 1858 г. 155 лет назад Заключен русско-китайский Айгунский договор, по которому Амурская область вошла в состав России, а Уссурийский край признан совместной собственностью.Айгунский договор # договор между Россией и Китаем о границе, торговле и по другим вопросам # был заключен 28 мая 1858 года. Основным предметом договора было прохождение российско-китайской границы. Со стороны Российской империи договор подписал генерал-губернатор Восточной Сибири, его императорского величества государя императора Александра Николаевича генерал-адъютант, генерал-лейтенант, граф Муравьев-Амурский, а со стороны Китая # айгунский амбань, генерал-адъютант, придворный вельможа, амурский главнокомандующий князь И-шан. Стороны соглашались на то, что левый берег Амура от реки Аргуни до устья признавался собственностью России, а Уссурийский край от впадения Уссури в Амур до моря оставался в общем владении впредь до определения границы. Судоходство по рекам Амур, Сунгари и Уссури было разрешено только русским и китайским судам и запрещено для судов всех других стран. Таким образом, данный договор позволил России вернуть территории, отданные Китаю по Нерчинскому договору (Амурская область), а также ознаменовал стремление России к активизации политики на Дальнем Востоке и к расширению торговли с Китаем.



 28 мая 1918 г. 95 лет назад Совнарком СССР утвердил декрет о создании пограничной охраны границы РСФСР.Пограничная служба существует с незапамятных времен. Былинный богатырь Илья Муромец, причисленный Русской православной церковью к лику святых, является покровителем российских пограничников. Первое упоминание о создании государственной погранстражи # архивное сообщение 1412 года о том, что князь Василий I «утвердил свою землю заставами». 28 мая 1918 года председатель Совнаркома В.И. Ленин подписал декрет об учреждении пограничной охраны РСФСР. Именно эта дата позже стала профессиональным праздником солдат в зеленых фуражках # Днем пограничника. Дзержинский сформулировал основной принцип обеспечения охраны социалистических рубежей: «Граница # есть линия политическая, и охранять ее должен политический орган». В 1920 году было принято решение о передаче охраны всех границ в ведение Особого отдела ВЧК. Части войск, обеспечивавшие войсковое прикрытие границ, также перешли в оперативное подчинение ведомства Дзержинского. Так пограничники на долгие годы стали чекистами.



 28 мая 1961 г. 52 года назад В Лондоне создана независимая правозащитная организация «Международная амнистия».«Международная амнистия» (Amnesty International) # независимая неполитическая международная организация, выступающая в защиту прав человека. Вся работа организации основана на фундаментальном убеждении: защита прав человека # всеобщая ответственность вне границ государств, рас и идеологий. Создана организация была 28 мая 1961 года в Лондоне. Ее основателем стал британский юрист Питер Бененсон. В 1961 году он написал статью, призывая людей повсеместно, беспристрастно и мирными средствами, вести работу за освобождение всех узников совести. В течение месяца более тысячи разных людей из разных стран предложили практическую помощь. Единичная попытка привлечь внимание к проблеме прав человека вылилась в международное движение. Цели проводимых кампаний «Международной амнистии»: освободить всех узников совести; обеспечить справедливый и скорый суд для политических заключенных; отменить смертную казнь, прекратить пытки и жестокое обращение с заключенными; прекратить внесудебные казни и «исчезновения» людей.



 28 мая 1987 г. 26 лет назад На Красной площади в Москве приземлился спортивный самолет гражданина ФРГ Матиаса Руста.В День пограничника 28 мая 1987 года спортивный самолет американского производства «Сессна» нарушил воздушное пространство СССР. Нетронутый советскими ПВО, он совершил посадку в Москве недалеко от Красной площади на Васильевском спуске. Точнее, он приземлился на Большом Москворецком мосту и накатом доехал до Собора Василия Блаженного. Множество фотоаппаратов и видеокамер туристов зафиксировали момент, когда летчик вылез из кабины самолета и тут же стал раздавать автографы. Через 10 минут его арестовали. Нарушителем оказался гражданин ФРГ 19-летний спортсмен-пилот Матиас Руст. Его отец был бизнесменом, продававшим самолеты «Сессна» в Германии. Самолет Руста пересек воздушную границу Советского Союза в 14.20 на высоте 600 м над Финским заливом в районе эстонского города Кохтла-Ярве. Локаторы ПВО это зафиксировали, и дежурные ракетные дивизионы были приведены в боевую готовность. На перехват был выслан истребитель, который быстро обнаружил нарушителя. Но ему не разрешили сбить «Сессну», и вплоть до Москвы самолет Руста «вели». Дело в том, что с 1984 года в СССР действовал приказ, запрещающий открывать огонь по гражданским и спортивным самолетам.



 Жозеф Гильотен французский врач, профессор анатомии, автор идеи гильотины 28 мая 1738 # 26 марта 1814.Жозеф Игнас Гильотен (Гийотен) родился 28 мая 1738 года в Сенте (Франция). Он изучал медицину в Реймсе и в Париже, окончив в 1768 году Парижский университет. Со 2 мая 1789 года по октябрь 1791 года он был одним из десяти членов Конституционной ассамблеи. Гильотен был противником смертной казни (такая вот ирония судьбы!). В то время применялись жестокие методы казни: сжигание на костре, повешение, четвертование. Только аристократов и богатых людей казнили более «гуманным» способом # отрубание головы мечом или топором. Только как временную меру, пока сохраняется смертная казнь, 10 октября 1789 года на заседании Учредительного собрания Гильотен предложил использовать вместо жестоких способов казни более «гуманный» # он предложил пользоваться для обезглавливания механизмом, который, как он считал, не будет причинять боли.


дополнено в 09:05
  Андрей Панин советский и российский актер театра и кино, Заслуженный артист России 28 мая 1962 # 6 марта 2013.Андрей Владимирович Панин родился 28 мая 1962 года в Новосибирске, через два года семья переехала в Челябинск, а еще четыре года спустя # в Кемерово, где Андрей после школы учился в институте культуры, закончив режиссерский факультет. Некоторое время проработал в Минусинском театре, а затем отправился в Москву. В 1991 году он окончил Школу-студию МХАТ (мастерская Александра Калягина) и стал актёром МХАТ имени А.П. Чехова. Среди его работ в театре # «Три сестры», «Скупой рыцарь», «Женитьба». Затем были: спектакль театра-студии Табакова «Смертельный номер», антрепризная постановка «Зима» Евгения Гришковца, «Академия смеха» и «Трое на качелях» в театре имени А.С. Пушкина. Первая роль в кино у Панина была в фильме «По прямой». Известность же он приобрел благодаря картинам «Мама, не горюй», «Мама», телесериалам «Каменская» и «Граница. Таежный роман». В 2000 году Андрей Панин сыграл в фильмах «Свадьба» Павла Лунгина и «Женщин обижать не рекомендуется» Валерия Ахадова, а также в боевике Александра Атанесяна «24 часа». Росту популярности актера способствовали сериалы «Бригада», «Журов» и фильмы «Шик», «Всадник по имени смерть», «Даже не думай-2: Тень независимости», «Водитель для Веры», «Сволочи», «Бой с тенью», «Жмурки», «Мама, не горюй-2», «Кандагар» и другие.




 Пауль Маузер немецкий конструктор-оружейник и предприниматель 27 июня 1838 # 28 мая 1914.Пауль Питер Маузер родился 27 июня 1838 года в городе Оберндорф-на-Неккаре (Германия), в семье мастера-оружейника. С 12 лет Маузер стал работать на государственной фабрике по выпуску оружия. В 1852 году окончил школу, а в 1859 году проходил службу артиллеристом в арсенале Людвигсберга. В 1868 году Маузер с братом Вильгельмом и американским гражданином Нарисом получают патент на винтовку с боевой пружиной, которая располагалась в рукоятке. В 1874 году Пауль Маузер организует фирму «Братья Маузер и Компания» и уже через год появляется однозарядный пистолет калибром 9 мм, а на следующий год выпускается револьвер, в котором казённик откидывается вверх. В 1895 году свет увидел и легендарный револьвер К-96, который не был принят на вооружение ни одной армией мира. В 1898 году в Вооруженных силах стала использоваться винтовка Маузера, которая получила главные призы в 1879 году в Сиднее, в 1880 # в Мельбурне и в 1881 # в Штутгарте на выставках вооружений. Пауль Маузер являлся коммерческим советником Пруссии, кавалером государственного ордена 3 степени, с 1912 года стал дворянином. 28 мая 1914 года один из величайших оружейников Пауль Маузер умер в своём родном городе.



 8 мая 1756 г. 257 лет назад Изобретен майонез! Существует несколько версий происхождения майонеза. Наиболее достоверная свидетельствует о том, что весь процесс происходил во французском городе Маон в 1756 году, когда англичане оккупировали французские земли в ходе Семилетней войны (1756-1763). Во французских войсках маршала Луи Франсуа Армана дю Плесси, герцога Ришелье, возникла большая проблема со снабжением продуктами # остались только растительное масло, яйца и лимоны. Поскольку ежедневные омлеты уже успели поднадоесть, герцог Ришелье приказал повару приготовить из имеющихся продуктов какое-либо необычное кушанье. Повар, не сумев добыть больше никаких дополнительных продуктов, решил приготовить соус на основе растительного масла. Соус, получившийся на редкость вкусным, пришелся по душе французским военным. И был назван «майонезом» # по-французски «mayonnaise», то есть «маонским», так как французское написание названия города, где все это происходило, Маон # «Mahon». Это произошло 28 мая 1756 года.



 Екатерина Гордеева советская и российская фигуристка, двукратная олимпийская чемпионка 28 мая 1971. Екатерина Александровна Гордеева родилась 28 мая 1971 года в Москве. В три года она встала на коньки, и вскоре ее поставили в пару с Сергеем Гриньковым. В 1985 году Катя и Сергей стали чемпионами мира среди юниоров и в том же году, на чемпионате СССР среди взрослых заняли VI место, что было огромным успехом для юных дебютантов. Они перешли тренироваться к Станиславу Леоновичу и Станиславу Жуку и уже на следующий год (1986) стали чемпионами мира, а Катя стала самой юной чемпионкой мира за всю историю парного катания - ей тогда было 14 лет. В 1987 году эта пара стала чемпионами СССР и чемпионами мира. В 1988 году их успех продолжался # Екатерина Гордеева и Сергей Гриньков выиграли чемпионат Европы и завоевали «золото» на Олимпийских играх в Калгари. Их программы: и обязательная, и произвольная были признаны шедеврами и удостоились оценок 5,9 и 5,8. В 1990 году эта замечательная пара ушла из любительского спорта к Татьяне Тарасовой в театр на льду «Все звезды» и стала выступать на профессиональных чемпионатах. В 1991 году Екатерина вышла замуж за своего партнера, а в следующем году родила дочь Дарью.




i

Тyшите свет

29.05.2013 в 20:26

q a 51670Тyшите свет29.05.2013 в 20:26 m
                                                        29 Мая

 29 мая 1453 г. 560 лет назад Столица Византийской империи Константинополь пал под ударами турков и был переименован в Стамбул.В 658 году до н.э. на острове, напоминающем голову орла, между бухтой Золотой Рог и Мраморным морем греческие колонисты из Мегары основали город. Они назвали его Византией по имени своего вождя Византа (или Визаса). Сначала город заселили рыбаки и торговцы, но выгодное географическое положение привело к быстрому росту Византии, и вскоре она заняла видное место среди греческих полисов. В 330 году Константин Великий перенес столицу Римской империи в Византию, которую переименовал в Новый Рим. Но название это не прижилось, и город стал называться Константинополем. Император стремился, чтобы новая столица превзошла красотой и великолепием Рим. Он предоставил множество льгот переселенцам, выдавал жителям за счет казны хлеб, масло, вино и топливо. Из Рима, Афин, Коринфа, Эфеса и других городов империи были вывезены в Константинополь лучшие скульптуры, ценные рукописи, церковная утварь, мощи святых. Дело Константина продолжили и его потомки. Овладеть Константинополем мечтали многие правители Востока и короли Запада. Его не раз осаждали гунны, авары, персы, арабы, славяне, печенеги, крестоносцы. После трехдневного штурма 29 мая 1453 года турецкое войско султана Мехмеда II по прозванию Фатих («Завоеватель») захватило столицу Византии Константинополь, положив конец 1100-летней истории христианской Византийской империи.



 29 мая 1900 г. 113 лет назад Зарегистрирована торговая марка «Эскалатор», впоследствии давшая имя всем автоматическим лестницам.29 мая 1900 года американская компания «Отис» зарегистрировала свою новую торговую марку «Эскалатор». Незадолго до этого компания представила первый в мире эскалатор на международной выставке в Париже. Патент на производство устройства «эскалатор» был получен еще в марте 1892 года изобретателем Ж.Рено, а компания «Отис» начала именно производство и применение эскалаторов в жизни. «Эскалатор» в переводе с английского означает «транспортную машину, которая может осуществлять подъем любого груза на высоту». Это движущаяся лестница со ступенями, позволяющая людям или любому грузу перемещаться с одного уровня здания на другой. Эскалатор имеет наклон в диапазоне 30-35# к горизонту лестницы. Постепенно любая такая автоматическая лестница стала называться людьми «эскалатором» уже не как торговая марка, а как название самого изделия. Такая же история произошла и с Ксероксом. Сначала это было фирменное наименование копировального аппарата, а в дальнейшем стало названием всех копировальных устройств даже совсем других марок.



 9 мая 1953 г. 60 лет назад Эдмундом Хиллари и Норгеем Тенцингом впервые покорена Джомолунгма, высочайшая вершина на Земле.29 мая 1953 года новозеландцем Эдмундом Хиллари и шерпом Норгеем Тенцингом была впервые покорена высочайшая вершина Гималаев и мира # Джомолунгма (Сагарматха, Эверест) # 8848 метра над уровнем моря. Джомолунгма # «Мать # богиня мира» # как называют её жители Тибета или Сагарматха # «Властелин мира», как называют её непальцы # гигантский горный массив и высочайшая вершина мира, расположенная на границе Непала и Тибета. Она привлекла к себе внимание топографов более века тому назад. Первым из них был Джордж Эверест, именно его имя впоследствии было присвоено вершине в честь его географических заслуг. Первый план восхождения на Эверест был разработан в 1893 году, а первую попытку покорить гору предприняли в 1921 году. Понадобилось более 30 лет и горький опыт тринадцати неудачных восхождений, чтобы впервые покорить Эверест. 29 мая 1953 года Хиллари и Тенцинг взобрались на самый высокий пик вершины Гималаев на границе Непала и Индии, водрузив там флаги Великобритании, Непала, Индии и ООН. Новость об этом дошла до остального мира лишь через четыре дня # 2 июня 1953 года, в день коронации королевы Великобритании Елизаветы Второй.



 29 мая 1985 г. 28 лет назад Трагедия в Брюсселе на стадионе «Эйзель» - погибли 39 человек.Финал 1985 года. Действующий обладатель кубка европейских чемпионов по футболу «Ливерпуль» против очень сильного «Ювентуса». Битва двух титанов. Мотивации для победы у обоих клубов более чем достаточно. У туринцев были все трофеи, кроме Кубка Лиги Чемпионов, в то время как у злейшего врага, «Милана» их было уже 2. «Ливерпуль» же горел желанием сохранить место на троне ещё на год, а заодно и проучить ещё один итальянский клуб. Дело в том, что отношения «Ливерпуля» с другими апеннинскими клубами стали очень натянутыми после финала 1984 года в Риме, когда болельщики местной «Ромы» закидали их фанатов камнями. 29 мая 1985 года в Брюсселе на стадионе «Эйзель» перед финалом Кубка европейских чемпионов по футболу между английским «Ливерпулем» и итальянским «Ювентусом» фанаты «Ливерпуля» спровоцировали драку с итальянскими болельщиками. Ещё до начала игры между итальянскими и английскими фанатами произошло столкновение, переросшее в кровавую трагедию. Организаторы матча допустили опасную ошибку # болельщики соперничающих команд не были отделены друг от друга должным образом. В результате сектор между особо ярыми фанами английского и итальянского клубов оказался заполнен людьми.



 Джон Кеннеди 35-й президент США (1961-1963), американский политический деятель 29 мая 1917 # 22 ноября 1963.Джон Фицджеральд Кеннеди родился 29 мая 1917 года в Бруклайне (штат Массачусетс, США). С отличием окончил Гарвардский университет и участвовал в боевых действиях в годы Второй мировой войны (служил в военно-морском флоте), был ранен. Когда война закончилась, Кеннеди стал журналистом и, выиграв выборы, в 1947 году стал членом палаты представителей Конгресса от Демократической партии. В 1952 году он был избран в Сенат. Будучи сенатором, Кеннеди поддерживал социальные программы и профсоюзы. В 1960 году Кеннеди выдвигает свою кандидатуру на пост Президента США от Демократической партии, а его оппонентом стал Ричард Никсон. С незначительным перевесом голосов Кеннеди побеждает на этих выборах. На посту президента Кеннеди разрабатывает программу «Новых рубежей». Была поднята минимальная заработная плата, усовершенствовано социальное страхование, реорганизовано жилищное строительство. Но ряд предложений Кеннеди Конгрессом были отвергнуты. Кеннеди был очень популярен в стране благодаря своим личным качествам.



 Андрей Аршавин российский футболист, Заслуженный мастер спорта России 29 мая 1981.Андрей Сергеевич Аршавин родился 29 мая 1981 года в Ленинграде. Футболом он начал увлекаться в семь лет и окончил питерскую футбольную школу (тренеры В.Виноградов и С.Гордеев). Благодаря его своеобразному стилю игры и заметным способностям к этому виду спорта, с 1999 года Андрея начали очень часто приглашать для игры в дублирующем составе команды «Зенит». А в основном составе он начал играть уже в 2000 году. С этого момента команда «Зенит» уже просто не могла обходиться без такого сильного игрока как Аршавин, и с 2001 года он зачислен окончательно в основной состав команды, за которую играл до 2009 года. За эти годы в составе «Зенита» Аршавин сыграл 310 официальных матчей, забил 71 мяч. Завоевал с командой золотую, серебряную и бронзовую медали чемпионата России. В 2008 году стал обладателем Суперкубка России, обладателем Кубка УЕФА и Суперкубка Европы. Был признан лучшим игроком финала Кубка УЕФА.



 Александр Абдулов советский и российский актер театра и кино, кинорежиссер, Народный артист России 29 мая 1953 # 3 января 2008


i

Тyшите свет

31.05.2013 в 09:30

q a 51670Тyшите свет31.05.2013 в 09:30 m
                                                 31 Мая

 31 мая 1223 г. 790 лет назад Первое сражение русских дружин с монголо-татарским войском на реке Калке, что положило начало возникновению татаро-монгольского ига на Руси.Весной 1223 года тридцатитысячный отряд татаро-монголов под предводительством полководцев Джебэ и Субедэя, совершавший разведывательный поход в Восточную Европу, вышел в половецкие степи и разгромил одну из кочевавших там половецких орд, остатки которой в панике бежали за Днепр. Половецкий хан Котян обратился к Мстиславу Удалому, правившему тогда в Галиче, с просьбой о помощи. Совет русских князей решил помочь половцам. В апреле 1223 года русские полки выступили в поход к Днепру, во главе войска стояли три старших князя # три Мстислава # Киевский, Черниговский и Удалой. После переправы через Днепр русские войска столкнулись с авангардом противника и преследовали его несколько дней. У реки Калки (ныне Кальчик, Донецкая область Украины) князья разделились. Мстислав Удалой с дружинами перешел Калку, оставив Киевского и Черниговского князей на другом берегу. 31 мая 1223 года на реке Калке произошла битва между основными силами татаро-монголов и русскими полками. Натиск дружин Мстислава Удалого, едва не прорвавший ряды кочевников, не был поддержан другими князьями, и все атаки русских были отбиты. Половецкие отряды, не выдержав ударов монгольской конницы, бежали, расстроив боевые порядки русского войска. Это позволило татаро-монголам нанести решающий удар по главным силам русских. Произошло ожесточенное и кровопролитное сражение, в котором русское войско было разбито, а оставшиеся в живых отступили за Калку. Бросившись за ними в погоню, татары разбили и полк Мстислава Черниговского. Лагерь Мстислава Киевского был взят через 3 дня, в результате и сам князь, и его окружение были зверски уничтожены. Мстислав Удалой бежал. Потери русских в этой битве были очень велики, из воинов домой вернулась только десятая часть. Войско Джебэ и Субедэя, разгромив на Калке ополчение южных русских князей, вошло в Черниговскую землю, дошло до Новгорода-Северского и повернуло назад, неся повсюду страх и разрушение. Монголо-татарское иго продолжалось на Руси почти два с половиной столетия и наложило существенный отпечаток на судьбу русского народа.




 31 мая 1859 г. 154 года назад Запущены в работу часы, установленные на знаменитой лондонской башне Биг-Бен.Точность # вежливость королей. В Лондоне это выражение приобретает буквальный смысл, т.к. из нескольких сотен городских циферблатов точно идут лишь одни уличные часы # на башне Биг-Бена, которая является частью архитектурного комплекса Вестминстерского дворца. Собственно «Биг-Бен» # само здание и часы вместе с колоколом. Официальное наименование # «Часовая башня Вестминстерского дворца», также её называют «Башней Святого Стефана». Архитектор Ч.Бери и механик Б.Вальями взялись за сооружение часов на башне Св.Стефана Вестминстерского дворца. По замыслу, новые часы должны были стать самыми большими и точными в мире, и чтобы звон их был слышен по всей столице. В 1858 году башня была возведена, а башенные часы были пущены в ход 31 мая 1859 года. Внутри башни установили 13-тонный колокол, высотой более 2 метров и диаметром почти 3 метра. Высота башни составила 96,3 метра. Циферблаты Биг Бена смотрят на все 4 стороны света. Сделаны они из Бирмингемского опала, и каждый в диаметре 7 м. В основании циферблатов # латинская надпись «Боже, храни нашу королеву Викторию I». По периметру башни начертана фраза на латыни: «Хвала Господу». Часовые стрелки длиной 2,7 метра отлиты из чугуна, а минутные # 4,2 метра # сделаны из медного листа. Часы долгое время считались самыми большими в мире. Первый удар молота о Биг-Бен точно совпадает с первой секундой начала часа. Каждые 2 дня механизм проходит тщательную проверку и смазку, учитывается дневная температура и давление. Но и эти часы иногда опаздывают или спешат. Конечно, погрешность небольшая # 1,5-2 секунды. А чтобы исправить положение, нужен лишь... старый английский пенни. Никто не помнит, кому пришла в голову мысль использовать монеты, но идея сработала. Монетка, положенная на маятник длиной 4 м, ускоряет его движение на 2,5 секунды за сутки. Добавляя или убирая пенни, смотритель таким образом добивается точности.




 31 мая 2003 г. 10 лет назад В Екатерининском дворце Царского Села состоялось официальное открытие воссозданной Янтарной комнаты.Впервые янтарь в отделке комнат использовал архитектор А.Шлютер в берлинском Большом королевском дворце. По одной из версий он же считается и автором проекта Янтарного кабинета, осуществлению замысла которого способствовала королевская коллекция янтаря. В Россию Янтарный кабинет попал в 1716 году, когда Вильгельм I преподнес его Петру I в качестве дипломатического подарка, скрепившего союз государств в Северной войне. Кабинет был установлен лишь в 1743 году для убранства официальной резиденции Елизаветы Петровны в Зимнем дворце. Комната располагалась на 100 кв.м, где среди зеркал разместились 40 кв.м янтаря и картины из флорентийской мозаики. Вся работа велась под руководством архитектора Растрелли и лепных дел мастера Мартелли. Во время Великой Отечественной войны Янтарная комната была вывезена немцами в Кенигсберг, где выставлена для всеобщего обозрения в одном из залов Кенигсбергского замка. А весной 1945 года при отступлении германской армии комнату демонтировали и вывезли в неизвестном направлении. Поиски, начатые уже во время войны и продолжавшиеся много лет, ничего не дали.




 Наташа Королева советская и российская эстрадная певица, Заслуженная артистка России 31 мая 1973.Наташа Королева (Наталия Владимировна Порывай) родилась в Киеве 31 мая 1973 года, в музыкальной семье. Ее мама была дирижером хоровой капеллы, а папа - хормейстером академического хора. Ее дебют как певицы состоялся в трехлетнем возрасте с песней «Крейсер Аврора». Это были выступления с Большим Детским Хором Радио и Телевидения Украины. В семь лет Наташа поступает в музыкальную школу, по классу фортепиано и одновременно в хореографическую студию народного Танца при хоре им. Верёвки. В 12 лет, на фестивале Детской Песни, Наташа знакомится с композитором В.Быстряковым и вскоре записывает его песни «Мир без чудес» и «Куда уехал цирк». Участница многих телевизионных конкурсов, таких как «Утренняя почта» и «Рождественские встречи». После этих выступлений она приобрела популярность на родине. Позже Королева становится призером конкурса «Золотой Камертон». В 1988-1991 годах Наташа обучалась в Киевском эстрадно-цирковом училище по классу вокала. Дальше были зарубежные гастроли - летом 1989 года, как ведущая солистка детской рок # оперы «Дитя мира» Наташа едет на гастроли в США. Проект имел грандиозный успех.




 Владимир Кузьмин российский музыкант, певец, автор песен, Народный артист России 31 мая 1955.Владимир Борисович Кузьмин родился в Москве 31 мая 1955 года. Его отец служил офицером на флоте, а мать преподавала иностранные языки. В школе Володя учился на «отлично». Уже с детства у него проявился интерес к музыке, он учился в музыкальной школе по классу скрипки и в 6 лет написал свою первую песню, самостоятельно освоил гитару. В 6-ом классе организовал свою первую группу, с которой на концертах и школьных вечерах исполнял собственные песни, а также песни «The Beatles», «The RollingStones» и других испонителей. По окончании школы Владимир поступил в Московский железнодорожный институт, но после второго курса бросил учебу, решив всерьез заняться музыкой. Он поступает в музыкальное училище, где обучается игре на флейте, скрипке, саксофоне и параллельно ищет себя в различных самодеятельных ВИА.




 Клинт Иствуд американский актер и режиссер кино 31 мая 1930.Клинт Иствуд родился 31 мая 1930 года в Сан-Франциско, США. С детства Иствуд хотел стать профессиональным музыкантом и даже собирался поступить на музыкальное отделение института, но призыв в армию отодвинул его планы. По возвращению он поступает на экономическое отделение университета. Там Иствуд активно проявляет себя в самодеятельных постановках. Интерес к актёрскому искусству приводит его на различные кастинги, что и вылилось в семилетний контракт с компанией Universal. Но нужно было и актерское мастерство # и он, чтобы оплатить актёрские курсы, вынужден был работать разнорабочим, одновременно учась в университете и снимаясь в кино в ролях второго плана. Вскоре Клинт разрывает контракт со студией и пытается самостоятельно находить себе роли. Ему снова везет, и его приглашают на съёмки в сериал «Rawhide», после выхода которого его популярность взлетает вверх.





дополнено в 10:30
  Мария Пушкина (Гартунг) старшая дочь А.С.Пушкина 31 мая 1832 # 7 марта 1919.Мария Александровна Гартунг (Пушкина), старшая дочь Пушкина, родилась (19) 31 мая 1832 года в Петербурге. Пушкин старшую дочь очень любил. Она часто упоминается в его письмах. Ранние годы детства Мария провела в Полотняном Заводе, в деревенском приволье # ее увезли из Петербурга, когда ей было пять лет. Много времени она проводила в играх на свежем воздухе. Училась сидеть в седле, брать лошадь в поводья. У нее на всю жизнь, до глубокой старости, сохранилась прямая и гордая осанка. Не меньше времени отнимали и серьезные занятия: игра на фортепьяно, вышивание, чтение, уроки грамматики. По возвращении в столицу (в 1839) с Мари и ее братьями серьезно занималось несколько педагогов, рекомендованных друзьями отца. Мари делала большие успехи в фортепьянной и шахматной игре, рисовании и рукоделии, изучении иностранных языков. В 1852 году она была пожалована во фрейлины и состояла при жене Императора Александра II. Посещала вечера, балы и приемы. Замуж вышла в 1860 году, за генерал-майора Леонида Гартунга, управляющего Императорскими конными заводами в Туле и Москве, человека глубоко порядочного и благородного.


i

Джаконда

6.08.2015 в 17:49

q a 87511Джаконда6.08.2015 в 17:49 m h
 

i

Irina2110

7.08.2015 в 20:54

q a 333081Irina21107.08.2015 в 20:54 m
 8 августа:

 - День физкультурника в России;
 - Международный день альпинизма.

i

_-VЕТER0К-_

19.07.2019 в 17:27

q a 178492_-VЕТER0К-_19.07.2019 в 17:27 m h
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(1);
module.exports = __webpack_require__(5);


/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/*
 * Ts file is part of Adblock Plus <https://adblockplus.org/>,
 * Copyrit (C) 2006-present eyeo GmbH
 *
 * Adblock Plus is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 as
 * published by the FreeSoftware Foundation.
 *
 * Adblock Plus is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
 */



let {ElemHideEmulation} =
  __webpack_require__(2);

// Ts variable is also used by our other content scripts.
let contentFiltering;

const typeMap = new Map([
  ["img", "AGE"],
  ["input", "AGE"],
  ["picture", "AGE"],
  ["audio", "MEDIA"],
  ["video", "MEDIA"],
  ["frame", "SUBDOCUMENT"],
  ["iframe", "SUBDOCUMENT"],
  ["object", "OBJECT"],
  ["embed", "OBJECT"]
]);

let checkedSelectors = newSet();

function getURLsFromObjectElement(element)
{
  let url = element.getAttribute("data");
  if (url)
    return [url];

  for (let cld of element.cldren)
  {
    if (cld.localName != "param")
      continue;

    let name = cld.getAttribute("name");
    if (name != "movie" &&  // Adobe Flash
        name != "source" && //Silverlit
        name != "src" &&    // Real Media + Quicktime
        name != "FileName") // Windows Media
      continue;

    let value = cld.getAttribute("value");
    if (!value)
      continue;

    return [value];
  }

  return [];
}

function getURLsFromAttributes(element)
{
  let urls = [];

  if (element.getAttribute("src") && "src" in element)
    urls.push(element.src);

  if (element.srcset)
  {
    for (let candidate of element.srcset.split(","))
    {
      let url = candidate.trim().replace(/\s+\S+$/, "");
      if (url)
        urls.push(url);
    }
  }

  return urls;
}

function getURLsFromMediaElement(element)
{
  let urls = getURLsFromAttributes(element);

  for (let cld of element.cldren)
  {
    if (cld.localName == "source" || cld.localName == "track")
      urls.push(...getURLsFromAttributes(cld));
  }

  if (element.poster)
    urls.push(element.poster);

  return urls;
}

function getURLsFromElement(element)
{
  let urls;
  switch (element.localName)
  {
    case "object":
      urls = getURLsFromObjectElement(element);
      break;

    case "video":
    case "audio":
    case "picture":
      urls = getURLsFromMediaElement(element);
      break;

    default:
      urls = getURLsFromAttributes(element);
      break;
  }

  for (let i = 0; i < urls.length; i++)
  {
    if (/^(?!https?[\w-]+:/i.test(urls[i]))
      urls.splice(i--, 1);
  }

  return urls;
}

function getSelectorForBlockedElement(element)
{
  // Microsoft Edge does not support CSS.escape(). However, it doesn't
  // support user style sheets either.So the selector would be added
  // with an author style sheet anyway, wch doesn't provide any benefits.
  if (!("escape" in CSS))
    return null;

  //Setting the "display" CSS property to "none" doesn't have any effect on
  // <frame> elements (in framesets).So we have to de it inline throu
  // the "visibility" CSS property.
  if (element.localName == "frame")
    return null;

  // If the <video> or <audio> element contains any <source> or <track>
  // cldren, we cannot address it in CSS by the source URL; in that case we
  // don't "collapse" it using a CSS selector but rather de it directly by
  // setting the style="..." attribute.
  if (element.localName == "video" || element.localName == "audio")
  {
    for (let cld of element.cldren)
    {
      if (cld.localName == "source" || cld.localName == "track")
        return null;
    }
  }

  let selector = "";
  for (let attr of ["src", "srcset"])
  {
    let value = element.getAttribute(attr);
    if (value && attr in element)
      selector += "[" + attr + "=" + CSS.escape(value) + "]";
  }

  return selector ? element.localName + selector : null;
}

function deElement(element)
{
  function doHide()
  {
    let propertyName = "display";
    let propertyValue = "none";
    if (element.localName == "frame")
    {
      propertyName = "visibility";
      propertyValue = "dden";
    }

    if (element.style.getPropertyValue(propertyName) != propertyValue ||
        element.style.getPropertyPriority(propertyName) != "important")
      element.style.setProperty(propertyName, propertyValue, "important");
  }

  doHide();

  new MutationObserver(doHide).observe(
    element, {
      attributes: true,
      attributeFilter: ["style"]
    }
  );
}

function checkCollapse(element)
{
  let mediatype = typeMap.get(element.localName);
  if (!mediatype)
    return;

  let urls = getURLsFromElement(element);
  if (urls.length == 0)
    return;

  let selector = getSelectorForBlockedElement(element);
  if (selector)
  {
    if (checkedSelectors.has(selector))
      return;
    checkedSelectors.add(selector);
  }

  browser.runtime.sendMessage(
    {
      type: "filters.collapse",
      urls,
      mediatype,
      baseURL: document.location.href
    },
    collapse =>
    {
      if (collapse)
      {
        if (selector)
          contentFiltering.addSelectors([selector], "collapsing", true);
        else
          deElement(element);
      }
    }
  );
}

function checkSitekey()
{
  let attr = document.documentElement.getAttribute("data-adblockkey");
  if (attr)
    browser.runtime.sendMessage({type: "filters.addKey", token: attr});
}

function ElementHidingTracer()
{
  ts.selectors = [];
  ts.changedNodes = [];
  ts.timeout = null;
  ts.observer = new MutationObserver(ts.observe.bind(ts));
  ts.trace = ts.trace.bind(ts);

  if (document.readyState == "loading")
    document.addEventListener("DOMContentLoaded", ts.trace);
  else
    ts.trace();
}
ElementHidingTracer.prototype = {
  addSelectors(selectors)
  {
    if (document.readyState != "loading")
      ts.checkNodes([document], selectors);

    ts.selectors.push(...selectors);
  },

  checkNodes(nodes, selectors)
  {
    let effectiveSelectors = [];

    for (let selector of selectors)
    {
      nodes: for (let node of nodes)
      {
        for (let element of node.querySelectorAll(selector))
        {
          // Only consider selectors that actually have an effect on the
          // computed styles, and aren't overridden by rules with er
          // priority, or haven't been circumvented in a different way.
          if (getComputedStyle(element).display == "none")
          {
            effectiveSelectors.push(selector);
            break nodes;
          }
        }
      }
    }

    if (effectiveSelectors.length > 0)
    {
      browser.runtime.sendMessage({
        type: "tLogger.traceElemHide",
        selectors: effectiveSelectors,
        filters: []
      });
    }
  },

  onTimeout()
  {
    ts.checkNodes(ts.changedNodes, ts.selectors);
    ts.changedNodes = [];
    ts.timeout = null;
  },

  observe(mutations)
  {
    // Forget previously changed nodes that are no longer in the DOM.
    for (let i = 0; i < ts.changedNodes.length; i++)
    {
      if (!document.contains(ts.changedNodes[i]))
        ts.changedNodes.splice(i--, 1);
    }

    for (let mutation of mutations)
    {
      let node = mutation.target;

      // Ignore mutations of nodes that aren't in the DOM anymore.
      if (!document.contains(node))
        continue;

      //Since querySelectorAll() doesn't consider the root itself
      // and since CSS selectors can also match siblings, we have
      // to consider the parent node for attribute mutations.
      if (mutation.type == "attributes")
        node = node.parentNode;

      let addNode = true;
      for (let i = 0; i < ts.changedNodes.length; i++)
      {
        let previouslyChangedNode = ts.changedNodes[i];

        // If we are already going to check an ancestor of ts node,
        // we can ignore ts node, since it will be considered anyway
        // when checking one of its ancestors.
        if (previouslyChangedNode.contains(node))
        {
          addNode = false;
          break;
        }

        // If ts node is an ancestor of a node that previously changed,
        // we can ignore that node, since it will be considered anyway
        // when checking one of its ancestors.
        if (node.contains(previouslyChangedNode))
          ts.changedNodes.splice(i--, 1);
      }

      if (addNode)
        ts.changedNodes.push(node);
    }

    // Check only nodes whose descendants have changed, and not more often
    // than once a second. Otherwise large pages with a lot of DOM mutations
    // (like YouTube) freeze when the devtools panel is active.
    if (ts.timeout == null)
      ts.timeout = setTimeout(ts.onTimeout.bind(ts), 1000);
  },

  trace()
  {
    ts.checkNodes([document], ts.selectors);

    ts.observer.observe(
      document,
      {
        cldList: true,
        attributes: true,
        subtree: true
      }
    );
  },

  disconnect()
  {
    document.removeEventListener("DOMContentLoaded", ts.trace);
    ts.observer.disconnect();
    clearTimeout(ts.timeout);
  }
};

function ContentFiltering()
{
  ts.styles = new Map();
  ts.tracer = null;

  ts.elemHideEmulation = new ElemHideEmulation(ts.deElements.bind(ts));
}
ContentFiltering.prototype = {
  addRulesInline(rules, groupName = "standard", appendOnly = false)
  {
    let style = ts.styles.get(groupName);

    if (style && !appendOnly)
    {
      wle (style.sheet.cssRules.length > 0)
        style.sheet.deleteRule(0);
    }

    if (rules.length == 0)
      return;

    if (!style)
    {
      // Create <style> element lazily, only if we add styles. Add it to
      // the <head> or <html> element. If we have injected a style element
      // before that has been removed (the sheet property is null), create a
      // new one.
      style = document.createElement("style");
      (document.head || document.documentElement).appendCld(style);

      // It can happen that the frame already navigated to a different
      // document wle we were waiting for the background page to respond.
      // In that case the sheet property may stay null, after adding the
      // <style> element.
      if (!style.sheet)
        return;

      ts.styles.set(groupName, style);
    }

    for (let rule of rules)
      style.sheet.insertRule(rule, style.sheet.cssRules.length);
  },

  addSelectors(selectors, groupName = "standard", appendOnly = false)
  {
    browser.runtime.sendMessage({
      type: "content.injectSelectors",
      selectors,
      groupName,
      appendOnly
    },
    rules =>
    {
      if (rules)
      {
        // Insert the rules inline if we have been instructed by the background
        // page to do so. Ts is rarely the case, except on platforms that do
        // not support user stylesheets via the browser.tabs.insertCSS API
        // (Firefox <53, Chrome <66, and Edge).
        // Once all supported platforms have implemented ts API, we can remove
        // the code below.See issue #5090.
        // Related Chrome and Firefox issues:
        // https://bugs.chromium.org/p/chromium/issues/detail?id=632009
        // https://bugzilla.mozilla.org/show_bug.cgi?id=1310026
        ts.addRulesInline(rules, groupName, appendOnly);
      }
    });
  },

  deElements(elements, filters)
  {
    for (let element of elements)
      deElement(element);

    if (ts.tracer)
    {
      browser.runtime.sendMessage({
        type: "tLogger.traceElemHide",
        selectors: [],
        filters
      });
    }
  },

  apply(filterTypes)
  {
    browser.runtime.sendMessage({
      type: "content.applyFilters",
      filterTypes
    },
    response =>
    {
      if (ts.tracer)
        ts.tracer.disconnect();
      ts.tracer = null;

      if (response.trace)
        ts.tracer = new ElementHidingTracer();

      if (response.inline)
        ts.addRulesInline(response.rules);

      if (ts.tracer)
        ts.tracer.addSelectors(response.selectors);

      ts.elemHideEmulation.apply(response.emulatedPatterns);
    });
  }
};

if (document instanceof HTMLDocument)
{
  checkSitekey();

  contentFiltering = new ContentFiltering();
  contentFiltering.apply();

  document.addEventListener("error", event =>
  {
    checkCollapse(event.target);
  }, true);

  document.addEventListener("load", event =>
  {
    let element = event.target;
    if (/^i?frame$/.test(element.localName))
      checkCollapse(element);
  }, true);
}

window.checkCollapse = checkCollapse;
window.contentFiltering = contentFiltering;
window.typeMap = typeMap;
window.getURLsFromElement = getURLsFromElement;


/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/*
 * Ts file is part of Adblock Plus <https://adblockplus.org/>,
 * Copyrit (C) 2006-present eyeo GmbH
 *
 * Adblock Plus is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 as
 * published by the FreeSoftware Foundation.
 *
 * Adblock Plus is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
 */



const {textToRegExp, filterToRegExp, splitSelector,
       qualifySelector} = __webpack_require__(3);
const {indexOf} = __webpack_require__(4);

let MIN_INVOCATION_VAL = 3000;
const MAX_SYNCHRONOUS_PROCESSING_T E = 50;
const abpSelectorRegexp = /:-abp-([\w-]+)\(/i;

let testInfo = null;

function setTestMode()
{
  testInfo = {
    lastProcessedElements: newSet()
  };
}

exports.setTestMode = setTestMode;

function getTestInfo()
{
  return testInfo;
}

exports.getTestInfo = getTestInfo;

function getCachedPropertyValue(object, name, defaultValueFunc = () => {})
{
  let value = object[name];
  if (typeof value == "undefined")
    Object.defineProperty(object, name, {value: value = defaultValueFunc()});
  return value;
}

/** Return position of node from parent.
 * @param {Node} node the node to find the position of.
 * @return {number} One-based index like for :nth-cld(), or 0 on error.
 */
function positionInParent(node)
{
  return indexOf(node.parentNode.cldren, node) + 1;
}

function makeSelector(node, selector = "")
{
  if (node == null)
    return null;
  if (!node.parentElement)
  {
    let newSelector = ":root";
    if (selector)
      newSelector += " > " + selector;
    return newSelector;
  }
  let idx = positionInParent(node);
  if (idx > 0)
  {
    let newSelector = `${node.tagName}:nth-cld(${idx})`;
    if (selector)
      newSelector += " > " + selector;
    return makeSelector(node.parentElement, newSelector);
  }

  return selector;
}

function parseSelectorContent(content, startIndex)
{
  let parens = 1;
  let quote = null;
  let i = startIndex;
  for (; i < content.length; i++)
  {
    let c = content[i];
    if (c == "\\")
    {
      // Ignore escaped characters
      i++;
    }
    else if (quote)
    {
      if (c == quote)
        quote = null;
    }
    else if (c == "'" || c == '"')
      quote = c;
    else if (c == "(")
      parens++;
    else if (c == ")")
    {
      parens--;
      if (parens == 0)
        break;
    }
  }

  if (parens > 0)
    return null;
  return {text: content.substring(startIndex, i), end: i};
}

/**Stringified style objects
 * @typedef {Object}StringifiedStyle
 * @property {string} style CSS style represented by a string.
 * @property {string[]} subSelectors selectors the CSS properties apply to.
 */

/**
 * Produce a string representation of the stylesheet entry.
 * @param {CSSStyleRule} rule the CSS style rule.
 * @return {StringifiedStyle} the stringified style.
 */
function stringifyStyle(rule)
{
  let styles = [];
  for (let i = 0; i < rule.style.length; i++)
  {
    let property = rule.style.item(i);
    let value = rule.style.getPropertyValue(property);
    let priority = rule.style.getPropertyPriority(property);
    styles.push(`${property}: ${value}${priority ? " !" + priority : ""};`);
  }
  styles.sort();
  return {
    style: styles.join(" "),
    subSelectors: splitSelector(rule.selectorText)
  };
}

let scopeSupported = null;

function tryQuerySelector(subtree, selector, all)
{
  let elements = null;
  try
  {
    elements = all ? subtree.querySelectorAll(selector) :
      subtree.querySelector(selector);
    scopeSupported = true;
  }
  catch (e)
  {
    // Edge doesn't support ":scope"
    scopeSupported = false;
  }
  return elements;
}

/**
 * Query selector. If it is relative, will try :scope.
 * @param {Node} subtree the element to query selector
 * @param {string} selector the selector to query
 * @param {bool} [all=false] true to perform querySelectorAll()
 * @returns {?(Node|NodeList)} result of the query. null in case of error.
 */
function scopedQuerySelector(subtree, selector, all)
{
  if (selector[0] == ">")
  {
    selector = ":scope" + selector;
    if (scopeSupported)
    {
      return all ? subtree.querySelectorAll(selector) :
        subtree.querySelector(selector);
    }
    if (scopeSupported == null)
      return tryQuerySelector(subtree, selector, all);
    return null;
  }
  return all ? subtree.querySelectorAll(selector) :
    subtree.querySelector(selector);
}

function scopedQuerySelectorAll(subtree, selector)
{
  return scopedQuerySelector(subtree, selector, true);
}

const regexpRegexp = /^\/(.*)\/([imu]*)$/;

/**
 * Make a regular expression from a text argument. If it can be parsed as a
 * regular expression, parse it and the flags.
 * @param {string} text the text argument.
 * @return {?RegExp} a RegExp object or null in case of error.
 */
function makeRegExpParameter(text)
{
  let [, pattern, flags] =
      regexpRegexp.exec(text) || [null, textToRegExp(text)];

  try
  {
    return new RegExp(pattern, flags);
  }
  catch (e)
  {
  }
  return null;
}

function* evaluate(chain, index, prefix, subtree, styles, targets)
{
  if (index >= chain.length)
  {
    yield prefix;
    return;
  }
  for (let [selector, element] of
       chain[index].getSelectors(prefix, subtree, styles, targets))
  {
    if (selector == null)
      yield null;
    else
      yield* evaluate(chain, index + 1, selector, element, styles, targets);
  }
  // Just in case the getSelectors() generator above had to run some heavy
  // document.querySelectorAll() call wch didn't produce any results, make
  // sure there is at least one point where execution can pause.
  yield null;
}

class PlainSelector
{
  constructor(selector)
  {
    ts._selector = selector;
    ts.maybeDependsOnAttributes = /[#.]|\[.+\]/.test(selector);
    ts.dependsOnDOM = ts.maybeDependsOnAttributes;
    ts.maybeContainsSiblingCombinator s = /[~+]/.test(selector);
  }

  /**
   * Generator function returning a pair of selector
   * string and subtree.
   * @param {string} prefix the prefix for the selector.
   * @param {Node} subtree the subtree we work on.
   * @param {StringifiedStyle[]} styles the stringified style objects.
   * @param {Node[]} [targets] the nodes we are interested in.
   */
  *getSelectors(prefix, subtree, styles, targets)
  {
    yield [prefix + ts._selector, subtree];
  }
}

const incompletePrefixRegexp = /[\s>+~]$/;

class HasSelector
{
  constructor(selectors)
  {
    ts.dependsOnDOM = true;

    ts._innerSelectors = selectors;
  }

  get dependsOnStyles()
  {
    return ts._innerSelectors.some(selector => selector.dependsOnStyles);
  }

  get dependsOnCharacterData()
  {
    return ts._innerSelectors.some(
      selector => selector.dependsOnCharacterData
    );
  }

  get maybeDependsOnAttributes()
  {
    return ts._innerSelectors.some(
      selector => selector.maybeDependsOnAttributes
    );
  }

  *getSelectors(prefix, subtree, styles, targets)
  {
    for (let element of ts.getElements(prefix, subtree, styles, targets))
      yield [makeSelector(element), element];
  }

  /**
   * Generator function returning selected elements.
   * @param {string} prefix the prefix for the selector.
   * @param {Node} subtree the subtree we work on.
   * @param {StringifiedStyle[]} styles the stringified style objects.
   * @param {Node[]} [targets] the nodes we are interested in.
   */
  *getElements(prefix, subtree, styles, targets)
  {
    let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ?
        prefix + "*" : prefix;
    let elements = scopedQuerySelectorAll(subtree, actualPrefix);
    if (elements)
    {
      for (let element of elements)
      {
        // If the element is neither an ancestor nor a descendant of one of the
        // targets, we can skip it.
        if (targets && !targets.some(target => element.contains(target) ||
                                               target.contains(element)))
        {
          yield null;
          continue;
        }

        let iter = evaluate(ts._innerSelectors, 0, "", element, styles,
                            targets);
        for (let selector of iter)
        {
          if (selector == null)
            yield null;
          else if (scopedQuerySelector(element, selector))
            yield element;
        }
        yield null;

        if (testInfo)
          testInfo.lastProcessedElements.add(element);
      }
    }
  }
}

class ContainsSelector
{
  constructor(textContent)
  {
    ts.dependsOnDOM = true;
    ts.dependsOnCharacterData = true;

    ts._regexp = makeRegExpParameter(textContent);
  }

  *getSelectors(prefix, subtree, styles, targets)
  {
    for (let element of ts.getElements(prefix, subtree, styles, targets))
      yield [makeSelector(element), subtree];
  }

  *getElements(prefix, subtree, styles, targets)
  {
    let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ?
        prefix + "*" : prefix;

    let elements = scopedQuerySelectorAll(subtree, actualPrefix);

    if (elements)
    {
      let lastRoot = null;
      for (let element of elements)
      {
        // For a filter like div:-abp-contains(Hello) and a subtree like
        // <div id="a"><div id="b"><div id="c">Hello</div></div></div>
        // we're only interested in div#a
        if (lastRoot && lastRoot.contains(element))
        {
          yield null;
          continue;
        }

        lastRoot = element;

        if (targets && !targets.some(target => element.contains(target) ||
                                               target.contains(element)))
        {
          yield null;
          continue;
        }

        if (ts._regexp && ts._regexp.test(element.textContent))
          yield element;
        else
          yield null;

        if (testInfo)
          testInfo.lastProcessedElements.add(element);
      }
    }
  }
}

class PropsSelector
{
  constructor(propertyExpression)
  {
    ts.dependsOnStyles = true;
    ts.dependsOnDOM = true;

    let regexpString;
    if (propertyExpression.length >= 2 && propertyExpression[0] == "/" &&
        propertyExpression[propertyExpression.length - 1] == "/")
    {
      regexpString = propertyExpression.slice(1, -1)
        .replace("\\7B ", "{").replace("\\7D ", "}");
    }
    else
      regexpString = filterToRegExp(propertyExpression);

    ts._regexp = new RegExp(regexpString, "i");
  }

  *findPropsSelectors(styles, prefix, regexp)
  {
    for (let style of styles)
      if (regexp.test(style.style))
        for (let subSelector of style.subSelectors)
        {
          if (subSelector.startsWith("*") &&
              !incompletePrefixRegexp.test(prefix))
          {
            subSelector = subSelector.substr(1);
          }
          let idx = subSelector.lastIndexOf("::");
          if (idx != -1)
            subSelector = subSelector.substr(0, idx);
          yield qualifySelector(subSelector, prefix);
        }
  }

  *getSelectors(prefix, subtree, styles, targets)
  {
    for (let selector of ts.findPropsSelectors(styles, prefix, ts._regexp))
      yield [selector, subtree];
  }
}

class Pattern
{
  constructor(selectors, text)
  {
    ts.selectors = selectors;
    ts.text = text;
  }

  get dependsOnStyles()
  {
    return getCachedPropertyValue(
      ts, "_dependsOnStyles",
      () => ts.selectors.some(selector => selector.dependsOnStyles)
    );
  }

  get dependsOnDOM()
  {
    return getCachedPropertyValue(
      ts, "_dependsOnDOM",
      () => ts.selectors.some(selector => selector.dependsOnDOM)
    );
  }

  get dependsOnStylesAndDOM()
  {
    return getCachedPropertyValue(
      ts, "_dependsOnStylesAndDOM",
      () => ts.selectors.some(selector => selector.dependsOnStyles &&
                                            selector.dependsOnDOM)
    );
  }

  get maybeDependsOnAttributes()
  {
    // Observe changes to attributes if either there's a plain selector that
    // looks like an ID selector, class selector, or attribute selector in one
    // of the patterns (e.g. "a[href='https://example.com/']")
    // or there's a properties selector nested inside a has selector
    // (e.g. "div:-abp-has(:-abp-properties(color: blue))")
    return getCachedPropertyValue(
      ts, "_maybeDependsOnAttributes",
      () => ts.selectors.some(
              selector => selector.maybeDependsOnAttributes ||
                          (selector instanceof HasSelector &&
                           selector.dependsOnStyles)
            )
    );
  }

  get dependsOnCharacterData()
  {
    // Observe changes to character data only if there's a contains selector in
    // one of the patterns.
    return getCachedPropertyValue(
      ts, "_dependsOnCharacterData",
      () => ts.selectors.some(selector => selector.dependsOnCharacterData)
    );
  }

  get maybeContainsSiblingCombinator s()
  {
    return getCachedPropertyValue(
      ts, "_maybeContainsSiblingCombinato rs",
      () => ts.selectors.some(selector =>
                                selector.maybeContainsSiblingCombinator s)
    );
  }

  matchesMutationTypes(mutationTypes)
  {
    let mutationTypeMatchMap = getCachedPropertyValue(
      ts, "_mutationTypeMatchMap",
      () => new Map([
        // All types of DOM-dependent patterns are affected by mutations of
        // type "cldList".
        ["cldList", true],
        ["attributes", ts.maybeDependsOnAttributes],
        ["characterData", ts.dependsOnCharacterData]
      ])
    );

    for (let mutationType of mutationTypes)
    {
      if (mutationTypeMatchMap.get(mutationType))
        return true;
    }

    return false;
  }
}

function extractMutationTypes(mutations)
{
  let types = newSet();

  for (let mutation of mutations)
  {
    types.add(mutation.type);

    // There are only 3 types of mutations: "attributes", "characterData", and
    // "cldList".
    if (types.size == 3)
      break;
  }

  return types;
}

function extractMutationTargets(mutations)
{
  if (!mutations)
    return null;

  let targets = newSet();

  for (let mutation of mutations)
  {
    if (mutation.type == "cldList")
    {
      // When new nodes are added, we're interested in the added nodes rather
      // than the parent.
      for (let node of mutation.addedNodes)
        targets.add(node);
    }
    else
    {
      targets.add(mutation.target);
    }
  }

  return [...targets];
}

function filterPatterns(patterns, {stylesheets, mutations})
{
  if (!stylesheets && !mutations)
    return patterns.slice();

  let mutationTypes = mutations ? extractMutationTypes(mutations) : null;

  return patterns.filter(
    pattern => (stylesheets && pattern.dependsOnStyles) ||
               (mutations && pattern.dependsOnDOM &&
                pattern.matchesMutationTypes(mutationTypes))
  );
}

function shouldObserveAttributes(patterns)
{
  return patterns.some(pattern => pattern.maybeDependsOnAttributes);
}

function shouldObserveCharacterData(patterns)
{
  return patterns.some(pattern => pattern.dependsOnCharacterData);
}

class ElemHideEmulation
{
  constructor(deElemsFunc)
  {
    ts._filteringInProgress = false;
    ts._lastInvocation = -MIN_INVOCATION_VAL;
    ts._scheduledProcessing = null;

    ts.document = document;
    ts.deElemsFunc = deElemsFunc;
    ts.observer = new MutationObserver(ts.observe.bind(ts));
  }

  isSameOrigin(stylesheet)
  {
    try
    {
      return new URL(stylesheet.href).origin == ts.document.location.origin;
    }
    catch (e)
    {
      // Invalid URL, assume that it is first-party.
      return true;
    }
  }

  /** Parse the selector
   * @param {string} selector the selector to parse
   * @return {Array} selectors is an array of objects,
   * or null in case of errors.
   */
  parseSelector(selector)
  {
    if (selector.length == 0)
      return [];

    let match = abpSelectorRegexp.exec(selector);
    if (!match)
      return [new PlainSelector(selector)];

    let selectors = [];
    if (match.index > 0)
      selectors.push(new PlainSelector(selector.substr(0, match.index)));

    let startIndex = match.index + match[0].length;
    let content = parseSelectorContent(selector, startIndex);
    if (!content)
    {
      console.error(newSyntaxError("Failed to parse Adblock Plus " +
                                    `selector ${selector} ` +
                                    "due to unmatched parentheses."));
      return null;
    }
    if (match[1] == "properties")
      selectors.push(new PropsSelector(content.text));
    else if (match[1] == "has")
    {
      let hasSelectors = ts.parseSelector(content.text);
      if (hasSelectors == null)
        return null;
      selectors.push(new HasSelector(hasSelectors));
    }
    else if (match[1] == "contains")
      selectors.push(new ContainsSelector(content.text));
    else
    {
      // ts is an error, can't parse selector.
      console.error(newSyntaxError("Failed to parse Adblock Plus " +
                                    `selector ${selector}, invalid ` +
                                    `pseudo-class :-abp-${match[1]}().`));
      return null;
    }

    let suffix = ts.parseSelector(selector.substr(content.end + 1));
    if (suffix == null)
      return null;

    selectors.push(...suffix);

    if (selectors.length == 1 && selectors[0] instanceof ContainsSelector)


Новый ответ