📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Микросервисная архитектура 2026: паттерны, которые отличают архитектора от кодера

Максим Добрынин | ex. Jetbulb1:34:25

Transcription

Ребят, как меня слышно? Подтвердите, пожалуйста.

Отлично, отлично. Что ж, тогда не будем затягивать и начнём. Как обычно по классике, я вам пошарю экран, и мы начнём с вами разбирать тему. Давайте, я буквально только убежусь в том, что у нас всё работает, и мы можем начинать.

Собственно, Итак, я думаю, что, ребят, можно постепенно переходить. Собственно, о чём мы сегодня с вами будем разговаривать. Э все вы собрались послушать про микросервисы. Понятное дело, микросервисы дело нелёгкое. И в современном мире в двадца шестом году ходит очень много за и против. Одни говорят: "Микросервисы избыточные, они слишком сложные". Другие говорят: "Ми микросервисы - это круто, они позволяют нам масштабироваться, эффективно использовать память". Есть люди, которые говорят: "Http умер, нужно переходить на кавку". И в принципе HTTP - это очень плохо. И TCP - это вообще просто днище полнейшая. Но все эти люди одновременно правы и неправы. А как это можно идентифицировать? Как можно понять, почему одни говорят правильные вещи, а другие нет? Самый верный путь - это разобраться в том, как микросервисы составляются, какие проблемы они решают и главное перед вами какие стоят проблемы, которым вам приходится, э, я бы так изучать или решать во время обучения вашего индивидуального, либо при выполнении ваших непосредственных должностных обязанностей.

Сегодня в качестве примера, чтобы показать вот эти должностные, те самые должностные обязанности, мы с вами возьмём не супер сложную тему и поговорим о том, я бы сказал бы даже очень популярную, а поговорим о том, как создать заказ, а и затем отправить этот заказ в обработку платёжной системе. А представим себе, поэтому мы немножко порисуем перед тем, как мы перейдём к коду и более техническим решениям. Ведь любые микросервисы, монолиты и модулиты, но всегда начинаются с системного дизайна. Но главное здесь вы должны понимать, как происходит как устроена система и как выполняется э data flow.

Начнём с простого. У нас с вами есть человек, который делает заказ, а это клиент условный. Давайте не хочет писать. Чик-чик. Чуть-чуть уплотним. Так, есть. Ага, шрифт маленький. Так, так, так, так, так. Маленький шрифт. Это отлично. Почему? Почему такой маленький шрифт? Одну секундочку, ребята, у меня почему-то не хочет. А, понятно, что маленький, потому что я за зазумил, да.

Так, а у нас есть с вами клиент. Он, разумеется, совершает заказ какой-то, и его флоу выглядит следующим образом в сторону какого-нибудь ордерсервиса. Order севис. У него тоже есть своё время. Соответственно, у него, вероятно, есть ээ какая-то база данных, потому что нужно хранить так или иначе ордера где-нибудь. И есть ещё какой-либо платёжный сервис, который располагается удалённо или где-то рядом. Это нас не интересует. Назовём его payment севис. У каждого из них есть, понятно, свой flow асинхронный либо синхронный по отношению к одному-либо другому. Нас это сейчас не сильно интересует.

Начнём мы с клиентом. Соответственно, клиент выполняет запрос по созданию заказа. То есть создать заказ add order или create, неважно. Можно для проки назвать его create. Соответственно, Order севис должен его каким-то образом обработать. У него начинается процесс э какой-то. В конечном итоге он приводит к тому, что сохранить базу данных save data или save order. Ну, разумеется, далее мы получаем или отправляем ответ на клиента. И здесь responsс, да, окно. Нас не интересует, успешно это или провально. Нам важно, что этот процесс был. И, разумеется, вот это пространство, которое сейчас выделено красным цветом, заштриховано, это как раз и есть тот самый синхронный процесс. Почему мы говорим здесь именно о синхронном процессе? Это крайне важно. Когда вы работаете как клиент, то с большой долей вероятности вы что-то кликаете на графическом интерфейсе вашего браузера, веб-аплекухи какой-то иначе говоря, либо телефона. Соответственно, вам нужно постучаться в какой-то gateway. Как правило, это API gateway, неважно для чего. И это первая точка коммуникации, которая проходит между клиентом и бэкэндом. То есть она, как правило, сорри, синхронная. Именно по этой причине здесь я сделаю вам отметку HTTP. А те, кто не любят, вернее, те, кто считает, что HTTP не подходит для микросервисов, можете уже начинать меня кидаться камнями. Но при этом, придумайте для комментария, я бы сказал бы, хорошее обоснование, почему HTTP или REST API в целом плохо для микросервисов. Но у нас система такова.

Далее, разумеется, э мы с вами говорим о том, что вот пришёл запрос по созданию заказа. необходимо сделать какой-то процесс. Здесь мы его сохраним этот. И ещё мы добавим небольшую стрелочку, к сожалению. Ага. Нет, стоп. Вот так вот. Небольшую стрелочку, которая будет указывать Куда ты пропала? Ага. Которая будет указывать на то, что происходит какой-то процесс. К сожалению, она у меня выгибается. Странно. Страшно. Ну, то есть это мы называем processing, да? То есть backend process. Back and processing или ладно или процесс. Вот так, да. То есть мы не обращаемся ни в какие сторонние сервисы. Для нас это абсолютно нормальная ситуация. Ээ и нам необходимо просто обработать что-то вероятное, данные подменить, дтшки заменить и потом сохранить базу данных. Но в рамках нашего с вами конкретного э примера нам необходимо, безусловно, эту историю э добавить тем, что мы с вами сохранили заказ, всё отлично, но теперь необходимо его отправить ээ в э обработку в Payment Service. И это может быть асинхронным. Это может быть абсолютно асинхронный процесс. То есть мы не будем ждать ответа. Эээ, для чёткости я покажу, что здесь от базы данных мы ждём ответ, потому что соединение с базы данных, оно, разумеется, синхронно. И здесь мы навём коit commit или ээ rollback, да, или rollback. Ну, в зависимости от ситуации, как нам повезло, не повезло, мы это сейчас не обсуждаем. А, и в конечном итоге, после того, как у нас произошёл комиролбек, всё синхрончино заканчивается. Мы отправляем запрос Premicom в Payment Service. И здесь, например, Publish Publish event. Evвен у нас простой. Order created. Зачем это нужно? Всё просто, логично. Мы с вами собираемся, а по мы с вами собираемся уведомить Payment Servвиice для начала обработки платежа. Представим себе, что в системе у нас уже есть все данные клиента, его карточка, CVвишки, но это верификационные коды, которые необходимы. То есть всё о'кей. Он в системе правильно заведён. Никаких проблем с данных у нас нету в отношении данных клиента. Это, условно говоря, у вас есть на гитхабе подписка, Digital Ocean, подписка Google клады какие-нибудь подписка. И вас раз в месяц, разумеется, чаржит какая-то компания, снимает с вашего счёта деньги за услуги. Ну, допустим, Spotify, всё, что угодно. Это для всех сегодня вполне себе понятная схема. И вот в ордерах, когда вы через, допустим, какой-то онлайнсервис заказываете новый продукт, сапоги, телефон, это работает приблизительно таким же образом. Понятно, у нас очень упрощённая система, но мы сходимся в том, что в данном конкретном примере у нас в данном конкретном примере мы подразуем, что с данными пользователя всё в порядке. Мы не занимаемся работой, связанной с обработкой платежа. Нам главное уведомить, чтобы она началась.

А теперь посмотрим внимательно. Вот у нас вроде как бы готовая система и вроде всё о'кей. Э, но мы же здесь с вами собрались разбирать микросервисную архитектуру. Мы видим, у нас есть здесь два выраженных ярко микросервиса. Первый - это у нас, разумеется, Order сервис и второй - это Payment Service. Это два микросервиса. У каждого есть своя ответственность. Здесь у вас сомнений быть не должно. Они деплоятся отдельно, вероятно, э независимо друг от друга и разрабатываются независимыми командами. Э, но микросервисы приносят пользу, масштабирование, независимая разработка, возможность, вероятно, выбирать различные технологии, подходы. А и в принципе это влияет на скорость доставку, призвано влияет на скорость доставку, но в то же время это несёт комплексность. А комплексити или сложность выражается в том, что чем больше у вас микросервисов, тем сложнее ваша система. То есть, с одной стороны, мы хотим улучшить нашу систему, но улучшение чего-то будет стоить.

В Монолите всё просто. Здесь мы не будем сильно останавливаться. Скажу, что всё в одном: э легко дебажить, э легко деплоить, всего лишь один артефакт сложно масштабировать в зависимости от конкретной нужды. Разрабатывает одна команда и очень длительный цикл доставки и главное большие расходы на тестирование и в целом на поддержку. Поэтому, как бы, мы пришли к микросервисам, чтобы многие из этих проблем или чалленджей преодолеть. Но вместе с этим возникают проблемы. И давайте поговорим об этих проблемах, которые у нас возникают.

Для этого нарисуем не супер сложную крестик суперкрасного цвета, который будем э массивно эксплуатировать для того, чтобы показать, где у нас возникают проблемы. А первое первая проблема сеть. Сеть - это всегда, друзья, опасно. Не потому, что там ходят всякие бродяги, ээ, злоумышленники, иначе говоря, а потому, что сеть может оборваться, она нестабильна. Представим себе ситуацию, клиент посылает запрос, по какой-то причине запрос обрывается, но он всё-таки достиг сервис, но при этом клиент об этом не знает. То есть раз у нас возникает проблема, а это может произойти по разным причинам. Допустим, первая причина - это тайм-аут. По какой-то причине провисла сеть. И именно в этот момент, когда вы отправили запрос от клиента в Order севиice, это заняло очень большое количество времени для обработки, поэтому клиент оборвал соединение по причине тайм-аута. Ну давайте здесь я добавлю, наверное, где-то посередине. Скаже влезет, не влезет, судя по всему. Э, ну, я напишу, мы не сдаёмся. Тай, да, случается, бывает. Есть. А, безусловно, может просто сеть, оборваться грубо или же вы потом ещё делаете повторные попытки, потому что зачастую после тайм-аута хочется повторить попытку. Здесь сразу хочется отметить одну простую вещь. А если мы говорим с вами про создание объектов новых, то есть вы что-то пытаетесь инициировать в базе данных, изменить состояние, создать новое состояние, RRI patттер, э, связанный с микросервисной архитектурой и не только, это очень плохо. То есть вот мы с вами повстречались э с первым шаблоном проектирования Redry Patter. Если вы что-либо создаёте, Redr - это всегда плохо. В этом случае ээ лучше этого не делать. Почему? Потому что Rry Pattern эффективно работает при получении данных. То есть, иначе говоря, когда вы не можете системе причинить какие-то побочные эффекты. С другой стороны, э так или иначе Redrй, скорее всего, с точки зрения клиента всё равно будет. Ну, то есть вы попытаетесь сохранить ордер, э, добавить его, у вас грузится окно, грузится окно, но ничего не происходит, и потом бах, попробуйте ещё раз. Э, при этом всём, то есть когда вы в следующий раз будете создавать, э, заказ, а, вероятнее всего, то есть это уже будет система расцениваться как не повтор, а абсолютно новая. Но это всё зависит от того, как устроена система и как те самые архитекторы Оorderсервиса определяли API. Это очень много, значит, но тем не менее тайм-аут может произойти, э, и, разумеется, это может причинить ситуацию, где, повторюсь ещё раз, клиент не знает, был ли запрос доставлен, его статус, и поэтому что он делает правильно, он делает, соответственно, rрай, да? То есть здесь мы можем в случае тайм-аута, я это опущу, оно вот так будет, и здесь будет Redy. А в случае ретрая вы отправляете всё такой же э заказ. И разумеется, какие есть проблемы? Есть проблема следующая, что если ваш сервис недостаточно идем патентен, иначе говоря, он не умеет отличать одно состояние от другого, предположим, у вас пришло пришёл запрос на создание какого-то заказа, а вы его благополучно сохранили в базу данных, он действительно новый, но затем к вам пришёл точно такой же заказ, и вы взяли, опять же, его сохранили в базу данных. То есть у вас в базе данных два одинаковых заказа. И как раз Redй вот эту историю может ээ причинить. Не могу сказать, что сам по себе ретрай плох. В нём никакой проблемы нету. Проблемы начинаются, когда мы, разумеется, неправильно это используем. И RedЙ, э, как результат тайм-аута может причинить повторное создание. Иначе говоря, дубликат может создать в базе данных. Здесь сразу возникает намёк, каким образом это всё решать. И, соответственно, товарищем, который за нас это всё будет решать, мы его будем рисовать зелёным цветом. Это будет идем идемпотентный ключ. Имподемпотенки. Это ещё один шаблон проектирования, который призван решать проблемы. А, и они как раз очень тесно связаны с тем, что тайм-ауты причиняют желание повторить запрос. Иногда есть другие причины, по которым повторяются запрос, но, как правило, это нестабильная сеть. Разумеется, если ваше API спроектировано правильно, то API должен быть устойчивым и, главное, идемпотентным при создании запроздании каких-либо ресурсов. В нашем случае ресурс - это order. А это тот самый шаблон проектирования, который вам необходимо закладывать практически всегда, если вы говорите о том, что у вас есть API рыстовое или HTTP. И не только, на самом деле, оно может быть асинхронное, допустим, между где вы коммуницируете через Кавку, Rabit MQ. Э, иначе скажу, когда у вас есть операция, которая создаёт или изменяет состояние, вам всегда нужно побеспокоиться о идемпотенции этой операции или иначе говоря, ввести вот этот идемпотентный ключ, поскольку благодаря нему вы сможете удостовериться в том, что э в случае ретрая повторной операции по какой-либо причине а у вас не будет создаваться дубликат. Вы его либо обновите, предположим, если в этом есть необходимость, либо вы сразу же ответите клиенту, что это уже обработано, вот твой результат. Держи, пожалуйста. Как бы это даже улучшит нам производительность. И вот как бы первый момент. И ещё один, повторюсь, шаблон шаблон проектирования, часто применяющийся в проектировании микросервисов. Первый был тайм-аут. То есть, с одной стороны, тайм-аут - это у нас, э, шаблон проектиро, вернее, это проблема, которая возникает, conneнеction time out. С другой стороны, вот есть у нас такой товарищ, который называется Retry Pattern. Я его так здесь отмечу. Э, и он, э, тоже является частью микросервисной архитектуры, хотя и применялся задолго до неё. На самом деле много чего притащили из монолита, что работало здесь в скобочках. Давайте поставлю, что отмечу, что это тоже паттерн, чтобы вы понимали. С другой стороны, тай, кстати, тоже может быть паттерном. То есть connection time out, здесь уточню, on time out или это может быть response time out тоже. То есть с одной стороны вы не могли подключиться по какой-то причине или с другой стороны вы отправили запрос, но так и не дождались ответа. Но сам по себе тайм-аут тоже, между прочим, является паттерном. Его принято считать. И он говорит о том, что каждый раз, когда вы устанавливаете соединение как клиент с сервером, вам нужно побеспокоиться о том, чтобы настроить тайм-ауты на соединения и на ответы. Это очень важно. Это не столько про микросервисную архитектуру, но в том числе паттерн, который в неё закладывается. Почему? Потому что многие системы по умолчанию имеют бесконечный тайм-аут. Допустим, когда я давно работал с PHP, если не изменяет память, там реально бесконечный тайм-аут ставил. А, и если вы его не настроите, то, соответственно, все запросы будут висеть бесконечно, сервис завис, ресурсы отжираются, приходят новые и новые запросы, разумеется, система перенагружается и в итоге падает. Вот. Но здесь мы тайм-аут обсуждать как кейс я имею в виду тайм-аут паттерн как кейс, э, мы не будем аэ. Но будем двигаться дальше с шаблонами проектирования.

А вроде казалось, мы решили с вами иденпатентность, то есть мы предусмотрели это, мы реализовали паттерн патент ke, а мы точно знаем, если у нас придёт два одинаковых запроса, то мы и это можем идентифицировать. И, разумеется, дважды одно и то же обрабатывать не будем. А к этому шаблону применяются абсолютно разные подходы. Что такое идемпотентность? Здесь нет чёткого определения. Сам паттерн гласит просто одно: два одинаковых запроса - это одна и та же сущность. Соответственно, должен быть способ это идентифицировать. Позже в ходе мы посмотрим, как это реализовано у меня. Но разные системы, ещё раз повторюсь, они определяют это по-разному и по-разному это отражают в своём API. Вот.

Теперь следующее. Представим себе, что вроде о'кей, импотентность есть, но мы же с вами говорим о том, что нам необходимо уведомить сервис payment сервис о том, что а у нас с вами всё отлично, э, пожалуйста, оплатите сервис. Как это сделать? Ну, типичный ээ разработчик, разумеется, сохранился в базу данных. Отлично, вообще мега. А, и потом как-то асинхронно, параллельно или в конце паблишит, соответственно, и eventт в Кавку, в Rabit MQ. В моём примере будем использовать кавку, но это не ограничивается только кавкой. И опять же здесь могут произойти следующие проблемы. А одна из этих проблем, соответственно, это опять же сеть. Ну, сеть, в принципе, это всегда проблема для любого, э, разработчика и любого опа а и любого инженера. Вот так вот наш крестик подхватим. Поэтому сходу здесь можем поставить крест на этом всём. Опять же у нас сеть упала, то есть и здесь, допустим, network error напишу так. Network error. Это первая проблема, которая может произойти. Если вы думаете, что Кавка вас от этого защитит, я вас огорчу, Кавка никогда вас от этого не защитит. Аэ с чем это связано? Ээ с тем, что Кавка тоже работает в сети. Многие думают и ошибочно думают, что якобы асинхронная коммуникация разрешает проблемы, которые присущие в HTTP, потому что в HTTP сеть нестабильна, и якобы мы можем ээ по HTTP оборвать сеть. Разумеется, это принесёт проблемы. А с кавкой этого не будет. Это ложь, потому что Кавка всё также работает в сети. И Кавка всё также может потерять соединение с сетью. Соответственно, вы запаблишите ивент, предположим, какой-то красивый. И при этом всём вы никогда э не доставите это сообщение в Payment Service. Аа это первая ситуация. А вторая ситуация заключается в том, что вы, предположим, отправили успешно этот ивент. Всё отлично, здорово, никаких проблем с этим нету. Но по какой-то причине произошёл ээ ролбк. И вот прямо здесь я его отмечу красным. Не как операцию с точки зрения базы данных, а именно как, точнее, ну, давайте transaction failor. Transf failor. Вот так. Ну и, соответственно, произошёл ролback. Откуда, в принципе, знает Payment Service, что произошло в order сервисе? Ничего он о нём не знает. Соответственно, вы сначала успешно проверили идемпотентность. О'кей, такой транзакции нет. Попробовали её сохранить в базу данных. Параллельно посылаете событие, соответственно, асинхронное в Payment Service. И в этот самый момент у вас происходит сбой в транзакции, который, соответственно, приводит к чему? Правильно я уже сказал? К ролбеэку. Это тоже проблема. Проблема выражается в чём? Правильно. Суть заключается в том, что Payment Servвис, как я уже сказал, никогда не узнает о том, что у вас произошло в Оordрсервисе. Иначе говоря, ордер или заказ не существует, но оплатить его нужно. Или на или противоположная сторона, с которой я начал. Ордер существует, но оплата не происходит, потому что произошёл сбой и, разумеется, даже в кодепtion вылетает. И, разумеется, Payment севис никогда не узнает об этой, э, оплате, то, что о ней нужно побеспокоиться, поскольку всё, операция завершена. Клиент уведомлен: "Спасибо, вы успешно купили новый велосипед". Но при этом всём оплата не производится, и никто не знает, что с этим делать. Реально проблема для бизнеса. Вот такие вот ситуации негативные могут встречаться.

Как эту проблему решить? Простейший способ - это, друзья, pattern. Outbox pattern. Благодаря нему есть возможность предусмотреть все эти проблемы, которые я только что описал, на случай того, что оборвётся транзакция и Payment Service по какой-то причине не получит своё сообщение или, напротив, а Payment Servвиice уже знает о том, что есть заказ, но при этом всём а заказ по какой-то причине не создался. и произошёл ролбек. Как раз именно вот эту проблему нам может помочь решить outbox паттерн, потому что он довольно-таки прост. В комбинации с идемпотентностью можно с лёгкостью преодолеть все эти проблемы избежать дубликатов и в том числе говорить о таких э гарантиях доставки, о стратегии гарантии к доставке такой как at least Once. А, я думаю, многие уже слышали, она называется At least Once. Пишется таким образом и переводя по-простому хотя бы один раз. Что это значит? Это значит, в сущности своей, что такое сообщение будет отправлено как минимум один раз. Не идёт речь и о доставке. Здесь речь идёт об отправлении. Это значит, что данные данная стратегия гарантии доставки подразумевает дубликаты. дубликаты как могут могут быть, да, могут могут быть. И это реально проблема, особенно это проблема для платёжных систем, для, ну, всё, что связано с деньгами и в таком бизнесе. Это может причинить дубликаты. И дальше уже, я бы сказал бы, несогласованность, несогласованность данных, разумеется, по причине дубликатов. А, и в целом, чуть подвину, а, и в целом неправильная работа системы, да, неправильная работа системы. Это, в том числе может повлечь. Разумеется, когда мы говорим о такой гарантии доставки, нам нужно это всё предусматривать.

В целом, в комбинации идемпотентный ключ ээ нам позволяет это решить, поскольку в нашем случае севис является идемпотентным сервисом. Мы говорим, что у него есть API, оно он рестовый. Коммуникация по HTTP, я уже сказал, могут быть повторы. И, разумеется, нам необходимо здесь и разумеется, мы говорим о том, что будет at least ones а из-за этих повторов и нужно предусмотреть м потенс. Мы это решили. С другой стороны, нам крайне важно с вами, э, в случае ошибок, связанных с публикацией ивентов, тоже предусмотреть at least once. А почему? Это важно, поскольку в данном случае из-за каких-то ошибок в коде, ещё чего-либо сообщение, к сожалению, может быть отправлено и через кавку несколько раз. Такое тоже случается. И не будем здесь привязываться исключительно к кавке. Любая система по какой-либо причине может одно и то же сообщение, даже в асинхронном стиле, отправить несколько раз. Опять же, как я уже вам сказал, вы успешно запубликовали в Кавку что-то, но потом Кавка отвалилась. Она отправила сообщение к своему подписчику, не знает, было ли оно доставлено, экнолодж не получила, потому что связь оборвалась, и начинает повторять его ещё раз. А, соответственно, э вот может возникнуть дубликат, разумеется, это тоже нужно предусматривать. И гарантия Atlast Once нам помогает на этом сфокусироваться. То есть при проектировании системы нам просто необходимо держать это всё аэ в голове. Сам по себе паттер он позволяет нам разрешить вопросы дубликата и организовать гарантию доставки. Он не решает at least once. Он говорит о том, что даже если произойдёт какой-либо сбой, мы не приведём систему в неконсистентное или в несогласованное состояние. А несогласованное состояние - это когда Orderсвиice знает, что есть заказ, а Payment Servвиice не знает. Или наоборот Payment Servвиice знает, что есть заказ, а Order севис его уже отменил. Разумеется, вот это есть несогласованность данных, особенно в распределённой системе. И Outbox Patтер это будет решать, поскольку здесь механизм работает некогда иначе.

Сперва сохраняются данные омарном. Давайте нарисуем это в отдельном блоке. А есть наш наша с вами база данных и есть наш payment опа payment севис. И нарисуем это с позиции, не будем трогать клиента, он нас сейчас не интересует. И нарисуем это с позиции, соответственно, попа. Да, потерял. Угу. Есть. Начинается обработка. Вот она родная пошла. Соответственно, первое, что мы пытаемся сделать, выполнить сохранение в базу данных. Save order. Готово. Затем нам необходимо дождаться ответа. Ну ведь мы знаем, он будет, скорее всего, да? Здесь, разумеется, э commit, rollback в зависимости от ситуации. Ну, будем надеяться, что всё о'кей. Далее мы с вами делаем ещё одну операцию. Соответственно, а я бы сказал бы здесь не commit rollback, ээ, confirm. Вот так бы я бы сказал бы confirm в этом конкретном случае или acknowledge. А далее мы делаем с вами save outbox event или просто outbox для сокращения. Тоже ждём с вами. И, соответственно, это то, чем мы гарантируем с вами достойный ответ на эти трудности. Главное здесь отметить, очень важно отметить то, что вот вот эта операция, отмечу, зелёным бэкграундом она является атомарной, да? То есть это atomic op, это атомарная операция. И, как вы понимаете, она должна увенчаться комитом, комитом либо ролбеком в зависимости от того, что произошло. Здесь понятно в конкретно сейчас отправим набк, да, вот так. Здесь понятно у нас вместе с экноложем может быть ээ ещё нак. Это вполне нормально. Ну, имеется в виду операция не удалась, я это имею в виду. И если хоть одна из этих операций не удалась, то, разумеется, мы делаем ролбек. И всё. И на этом, друзья, всё. Мы больше как бы таким образом мы чётко с вами гарантируем, что ордер сохранён. Если сохранён, то мы затем помещаем специально в дополнительную таблицу Outbox, как правило, называется. Ну, может быть, и по-разному, э, событие, которое затем должно быть асинхронно отправлено в Payment сервис. И далее пока что всё ещё клиент ждёт здесь. Мы чуть-чуть продлим его страдания. Э-э, клиент всё ещё ждёт, ждёт, ждёт. Ой-ой-ой, покосилось всё. Сейчас я это исправлю. Так, чуть-чуть эти палки, ёлки выровняем. Готово. И после этого мы можем уже отвечать клиенту. Здесь был request, да, к, а здесь, соответственно, response. Respons параллельно после

того, как мы это завершим, мы с вами можем выполнить ещё одну операцию внутреннюю. Почему внутреннюю? Поскольку нам для этого не нужен никакой сторонний сервис. Эта операция будет связана с обработкой. То есть нам необходимо с вами подготовиться к обработке. У нас с вами будет бэкграунд процесс. Он не связанный с запросом ни в коем ни в коем случае. Я бы его назвал бы scheduler scheduler или scheduled task, при помощи которой будет считываться данные из базы данных. И здесь мы будем брать fetch outbox. И далее, это абсолютно не связано с клиентом, как я уже сказал, это отдельная операция на бэкграунде, поэтому она называется schedule tasк. И я бы её, в общем, назвал бы, ой, слово такое фоновое, да, фоновая операция. Фоновая, фоновая операция. Соответственно, вот так.

А мы сначала получаем доступ к базе данных. Понятно, она синхронная всё ещё. Она ещё всё ещё синхронная, но она клиента не затрагивает. То есть мы получили доступ к базе данных. Отлично. Затем она продолжается какое-то время вот здесь. Вот так. И после этого, когда мы сформировали окончательно запрос, то есть мы знаем, что всё точно, у нас есть в аутбоксе необработанные записи, мы спокойно это, друзья, отправляем в наш payment сервис и в ответ, разумеется, получаем acknledge, да? То есть, о'кей, принято. Ну, если никаких ошибок нету, да? То есть я написал publish publish и здесь acknledge. Готово. Так можно делать в цикле. Механизм, каким образом обрабатывать огромное количество запросов фоново, мы здесь обсуждать не будем. Здесь речь идёт только о шаблонах проектирования. Конкретно здесь, ещё раз, друзья, напомню, мы здесь говорили про Outbox pattern. И это его, собственно, реализация.

Как это можно сделать? А чтобы уточнить это, я бы сказал бы усвоить, здесь хочется проговорить ещё раз одну и ту же вещь, которую я уже сказал недавно. Outbox pattern в первую очередь решает несогласованность данных. То есть система не должна приходить в несогласованное состояние. И в том числе, э, если у вас будут несогласованно, будет несогласованное состояние, это может привести к неправильной работе системе или к её падению целиком. Разумеется, в этом и есть задача аутбокс паттерна, чтобы не получилось так, что одна операция выполнилась, а другая, с ней связанная провалилась и вовсе не знает о том, что первая выполнилась или наоборот, вторая выполняется по какой-то причине, а первая уже откатилась или почему-то она не выполнилась. И, разумеется, поскольку мы говорим о распределённых сервисах, ведь это дистрибуция, это Миicросервис О, Микросервис 2, э они друг о друге ничего не знают. Понятно, здесь кто-то может сказать, что ладно, можно устроить обмен сообщениями, э, на уровне а кавки или чего-нибудь другого, что пошлёт Оorder сервис, получит ответ от payment севис. Э, да, так можно сделать. Но таким образом мы, в принципе, лишаем систему возможности быть асинхронным, асинхронной в каком-то, в какой-то степени. А с другой стороны, э вы создаёте таким образом вы создадите просто больше проблем, поскольку, э, клиенту важно дождаться, э, ответа, что всё о'кей, всё готово, ордер сохранён, ему не важно, что платёж происходит здесь и сейчас. Платёж может простить через 5 секунд, через час, через полтора часа, если мы говорим про e-comмерce платежи. Поэтому его это интересует, не интересует. И, разумеется, нам не нужно так тесно связывать между собой Order Servвис и Payment Servвис. И Outbox Patter позволяет нам сделать вот этот ещё более безопасным. Вот как, друзья, это выглядит.

Ещё раз перечислю. Мы с вами только что обсудили несколько шаблонов проектирования. Первый - это тайм-аут. Он здесь не отражён. Он на клиентской части, мы её здесь не обсуждаем. Аа напоминаю, что, э, timeout паттер - это шаблон, который призван обеспечивать достаточное время для ожидания, но не делать его бесконечным. Как правило, это полминутки и всё. Далее мы обсудили косфина паттер, то есть это паттерн, который позволяет повторить запрос в случае необходимости, но этот паттерн приносит негативную сторону, позитивные и негативные. Негативная сторона - это что мон может привести к созданию дубликата. Именно по этой причине, как я уже отметил, трай лучше делать, именно чистый ретрай одного и того же запроса лучше делать, когда вы получаете ресурсы, а не создаёте их. А в противном случае вам нужно будет пересматривать каждый раз в рамках одного и того же заказа, который не получилось доставить. Вам нужно будет пересматривать его состояние. Это накладывает неудобство и определённую логику. заказами проще его отправить, удостовериться, что сервер его принял. Если не принял, то лучше считать такой заказ провальным, отметить его в каком-то логе на фронтде и всё. И попробовать его ещё раз создать с новым ID. Тогда мы точно будем уверены, что не будет никаких дубликатов. Ну и при этом всё. А даже если сеть по сети и клиент отправляет несколько раз одно и то же, такое тоже может произойти. И нам необходимо делать сервисы и, в частности, API устойчивыми. В нашем случае мы говорим про другой шаблон проектирования и мпотент ke идемпотентный ключ, задачей которого является обеспечение стабильного устойчивого API, при котором один и тот же объект не будет создан несколько раз. Напоминаю, что если мы используем с вами rest или я бы сказал бы HTTP, а именно постмед для создания объектов, то он, разумеется, не идемпотентный, это его природа. Сколько раз его выполнить, вот столько раз и будет создан объект. Там есть, я бы сказал бы, лайфхаки, как можно его превратить в псевдоидем идемпотентный. Э но, э, это уже не про шаблон проектирования идемпотентный ключ. И последний шаблон проектирования, четвёртый - это outbox паттерн, который мы здесь расписали более детально. Его задача, как, как я уже сказал, избежать ситуации, когда система, а, приводится в несогласованное состояние, и это в конечном итоге приводит к её неправильной работе или в целом потере её ценности вплоть до отказа. Вот как это, друзья, выглядит.

А сейчас, э, думаю, пора перейти к вопросам, э, уделим этом немного времени, после этого поговорим о коде и о способах реализации. А, и это будет заверша завершающая часть нашего с вами сегодняшнего а вебинара. Так, э, кидайте запросы. Запросы, вопросы. Я с радостью на них всех отвечу. Тактактактактак. А есть вот хороший вопрос, чисто из практики. Если у меня моя табличка Outbox оказалась пустой, все ордеры, все ордеры обо мм обработались и новые не поступали, э то получается мой шедулер будет просто так слать запросы в базу, ээ как быть в такой ситуации. Но это класс, хороший вопрос. А мы его не будем затрагивать технически именно в этом вебинаре, потому что он требует более внимате, я бы сказал бы, он требует большего времени и другого контекста. Здесь можем говорить про batch processing, а, но отвечу на него, потому что в моём коде вот как раз то такая же ситуация с отметкой-ду. Вот как именно я писал. А как это лучше делать? Необходимо, как я уже сказал, организовывать processing, когда, во-первых, вы мы сможем получать данные аэ безопасно, не перегружая базу данных. То есть мы будем выдёргивать какой-то определённый объём, если там что-то есть, и его складывать к будущему, к будущей обработке. Это первое. Это просто это про стабильность. Разумеется, мы предполагаем то, что в базе данных может не быть абсолютно событий никаких. Это тоже нормально. Для этого, в принципе, можно внедрить событийноориентированный механизм, то есть события создать, допустим, outbox creator и положить его в какое-то хранилище. Хранилище, не базу данных, потому что опять же мы ходим в базу данных, полить мы её не хотим. допустим, в какую-то очередь Rabbit MQ SQS от Амазона и складывать туда соответствующие э ивенты о том, что поступил вот такой вот аутбокс. Таким образом, у вас появится хранилище, которое будет наполняться информацией о том, что реально есть в базе. Но опять же, это огромный кусок кода, а это огромный кусок функционала. Затем, а, начнётся асинхронная обработка, что ваш опять же какой-то скедулер, он будет слушать, э, соответствующую очередь. Ээ, ну, это, как по мне, поэффективней, э, чем каждый раз обращаться в базу. Он будет слушать соответственно очередь, получать оттуда айдишки и затем уже на основании грамотно настроенной индексации в BD и правильного построенного запроса SQL или другого, нового SQL, можно будет получить именно те данные, которые вас интересуют. Это вот один из подходов. Безусловно, подход полить базу данных по Скедлеру один из вариантов. Вот. Вот я его именно так и реализовал, но это связано с тем, что нас сейчас эта тема не интересует. А, но я бы попробовал бы на твоём месте вот такой вариант. Хорошо. А так, друзья, э будут ли ещё какие-то вопросы по существу технических или всё понятно, всё отлично? Если всё так, то это нормально. Тема довольно-таки обширная, полагаю, у кого-то это может даже вызвать взрыв мозга. Ээ, но в целом, э, это о'кей, как я уже сказал. Ладно, а будем тогда двигаться дальше.

Начнём с простого. Начнём с самого простого. У нас есть с вами код, да, у меня сейчас есть только order севис и нам его вполне себе достаточно. Первое, с чего нужно начать в проектировании любого API. каким образом мы будем строить этот API. А потому что он должен быть устойчивым, версионируемым. А и главное, а вы строите API не для себя, вы строите API для клиентов, несмотря на то, что вы якобы стейкхолдер этого API, вы за него отвечаете, вы его строите клиентов. И очень важно поддерживаться, э, контракту, придерживаться контракту, э, обратной совместимости. Она, как правило, в себя включает backward и forward compatibility. И в том числе необходимо, э, в это закладывать ситуацию, связанную с версионированием, чтобы если что-то случилось, то, соответственно, была возможность это провалидировать, и клиент мог тоже, опять же, получить доступ к актуальной схеме. А как это можно сделать? Для этого существуют, друзья, специальные registry. Они так называются схема registry. Перед вами API COI эстала. Она в буквальном смысле слово хранит схемы в разных форматах. Э форматы тут абсолютно разнообразные. Аro, GP QL, JON KA, Open API, ээ, Protff и понеслось. То есть всё, что в принципе сегодня есть и чем мы довольствуемся. А мы будем с вами использовать Jon просто потому, что он простой, понятный, в отличие от прота Buff, да. У Джейсона есть недостатки, а у Протобаф есть как бы а у Протобафа они тоже есть. Это связано с тем, что протобаф нечитабельный для человека, а Джейсон отлично подходит для презентации, там где нужно глазами что-то смотреть. Поэтому мы берём его. Это единственная причина, почему так произойдёт. А в противном случае для асинхронной коммуникации я бы, вероятно, взял бы авра, но это уже отдельный топик. Какие структуры выбирать? Поговорим про API, который мы используем для рыста. За основу я взял стандарт Open API specification. Это стандарт, который определяет, как будет, который декларирует, как будет выглядеть ваш Rest API. А для этого я создал, э, собственно, Yamel. Он выглядит вот следующим образом. Ээ и здесь он представлен в ямовом формате, как я уже сказал. Здесь описываются операции, ответы, примеры запросов и не только. Здесь, что немаловажно, есть версия этого API. И это то, что можно впоследствии контролировать и делать ээ сопоставление. У вас версия, которую вы сейчас используете, ээ она является э совместимой с той, которую использует или нет. Поэтому именно используют registry. Почему? Всё просто, друзья. Вы когда собираете свой проект, когда ваш CCD происходит, вы вот это всё скачиваете из registry, так же самое, как и ваши клиенты. И затем на основании этого вы генерируете код, также его генерирует клиент. И, разумеется, это точка контроля и единая точка хранения. Во-вторых, это разбивает тесную связь между API и, э, бэкэндом и между клиентом и API. Вы скачиваете его, то, что есть. Вы видите версию, вот здесь даже есть версионирование. Мы видим latest. Пока что онам не одна, разумеется. Э, но это одна из причин, почему не, а, вернее, некоторая из причин, почему необходимо, а, делать так. Аэ, это называется устойчивое, предсказуемое API, то есть проектирование. Казалось бы, все начинают сразу с кода, но нет, по-хорошему, так не надо.

Затем, разумеется, мы, если воспользуемся вспомогательными тулами для разработки или для тестирования, то у нас появится вот такая вот красивая UАка. Э она уже работает, оно уже всё запущено. Э, ну, было ээ здесь, разумеется, мы используем спринг под капотом, и он нам это обеспечивает. Но опять же, всё основано на Open API спецификации и на туле, которая называется Swagger. Как мы видим, здесь вот есть полное описание нашей спеки, как выглядят запросы, какие разнообразные ответы, собственно, могут быть, вот примеры этих самых ответов и так далее, и так далее, ежем. Это очень полезно, потому что вы можете таким образом без какого-то кодинга увидеть как ожидать, что ожидать от вашего API. А версионирование, соответственно, которое используется для этого API, позволяет вам, как клиенту понять, что от этого ожидать. Во-вторых, здесь есть, э, объекты дхи, так, так, так званые, и вам не нужно будет их создавать руками. Вы всё можете при помощи Open API спецификацию сгенерировать весь фронт. Понятно? Я не говорю про под фронтендом я имею в виду контроллеры, делегаты и ДТО. Кстати, клиентскую часть вы тоже можете сгенерировать. То есть меньше кода, э больше, э, вы полагаетесь уже на схему. И вот этот regджистри, он этому помогает. В коде выглядит очень просто, на самом-то деле. Мы откроем наш не суперсложный, а-э, одну секундочку, да, э, так есть. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да, вот он. А-э, да,

Врываемся в торговый на торговый центр в учебную платформу АПРО. Там есть два офигеннейших курса. Один про микросервисы, где разбираются детально шаблоны проектирования, в том числе, кстати, и демпотентный ключ. А, и вторая - это командная разработка, где вы разрабатываете и end доставляете, имеется в виду с развёртыванием, э, небольшую микро, э, вернее, небольшую систему, связанную с микросервисами. Небольшую, потому что не потому, что она очень маленькая, а потому, что там нету тысячи микросервисов. Но их там достаточно, включая разные базы данных, разные шаблоны проектирования и бернетик. Поэтому, друзья, врывайтесь, ссылочка в описании, заполняйте форму. Поверьте, там супер интересно. И проведя эти курсы, вы уж точно научитесь делать не хуже, чем я, а вероятно, это же лучше.

А теперь давайте перейдём к вопросу, связанному с идемпотентными ключами. Вижу, тут немножко накопилось. А так, проект в гитере? А, думаю, что да, скоро можно будет. Конкретно сейчас я его не хочу публиковать, потому что он грязный. А-а, и я предпочитаю его довести чуть-чуть до ума, но думаю, что в ближайшее время, э-э, я его опубликую. Кому интересно, просто напишите мне в личку, э, или напишите менеджеру лучше, который вам поможет с этой историей, но он будет опубликован, просто можете подписаться, допустим, на мой ээitub, как вариант. А, ну или написать мне лишку. Так.

М. Ту-ту-ту. Вижу второй вопрос технический. Нормально, что ID генерирует не Hibernate в конструкторе, а мы его из контроллера э генерируем. Ээ из контроллера Hibernate в конструкторе. Ну давайте, мы ещё не мы не добирались до Hibernate, но на самом деле это не тема наша э наша. Но давайте посмотрим. Я открою Order Service и увидим э поговорим более о предметном. То есть мы здесь создаём с вами запись идемпотентный ключ. Это у нас окей. Order ID мы здесь создаём. Это тоже окей. И далее мы начинаем с вами подготовку к созданию самого ордера. И здесь в коде с вами сразу видим, почему так важно а иметь генерацию не в хайбернете, а непосредственно в коде. Ситуация такова, что ордер ID должен быть разделён между вот этой идемпотентностью, записью в BD, а в том числе и самим ордером. Разумеется, здесь ситуация следующая. Э что создать быстрее: ордер или запись идемпотентности? Разумеется, запись идемпотентности имеет более высокий риск ээ на провал. Я имею в виду, что её надо быстро создать. Если её не будет, то есть возникает риск создания дубликата. Поэтому мы и сразу с ходу её создаём. Это крайне важно, друзья. И разумеется, э мы для этого генерируем Order ID. И потом, соответственно, мы этот же Order ID передаём в Hibernate. Здесь, на самом деле, закладывается небольшой, я бы сказал бы, э, гэп, который может быть связан со следующей ситуацией. Мм. Теоретически, чисто теоретически, если у вас есть два или три или более экземпляров ордерсервиса и они одновременно вот именно в ту же наносекунду создали ордер ID, то они будут одинаковые. А, но там на самом деле такая энтропия, как говорит мой коллега, что скорее всего этого не произойдёт. Но шанс такой может быть. Ээ, чтобы избежать проблемы с дубликатами Order ID или в целом идентификаторов, тогда нужно реализовывать сервис, который будет генерировать дистрибутивные, стабильные, устойчивые, уникальные айдишки. Э, но это, я бы сказал бы про системный дизайн, это не тема этого урока или этого вебинара, точнее. Поэтому мы это отбросим. Э, а моё пояснение следующее, что нам необходим один и тот же ордер ID между двумя разными записями. Поэтому, а поскольку идемпотентную запись нужно создать как можно быстрее, поэтому мы создаём это не в хайбернейте, а непосредственно э здесь. Э, допустим, э, с проектом, которым я работаю, я имею в виду на своей привычной работе, э, проектирование и разработка платёжного шлюза, э, мы там не генерируем айдишки через Hibernate или через, ну, какими-либо другими способами, поскольку генерация айдишки происходит ещё раньше, чем мы сохраним что-либо в базу данных. Это тоже нормальный подход. Здесь негативного, ну, здесь отторжения никакого быть э не должно.

Так, следующий вопрос. Как гарантируется идемпотентность ключей? Но вопрос как будто бы с подвохом. Как гарантируется идемпотентность идемпотентных а ключей? В первую очередь должен быть просто устойчивый алгоритм, как генерировать эту айдишку. Зачастую ключ генерируется, в нашем случае пример очень, я бы сказал бы, примитивный. Э вот он, да? То есть мы видим, что нам идемпотентный ключ переходит от клиента. Сам клиент, а генерирует изначально ключ по по а алгоритму мы его не обязываем. Мы ему говорим: "Пожалуйста, используй ээ стандарт UIID". Uuid и передай. Мы его будем использовать как идентификатор идемпотентного ключа, он же идемпатентный ключ. Но опять же здесь можно попасть в ситуацию, когда множество параллельных клиентов создадут один и тот же ключ, потому что энтропия не сработала. Здесь опять же можно навязать клиенту аэ требования к э использованию какого-нибудь сервиса, который обязательно сгенерирует уникальный ключ стабильно. А и вот это нам решит проблему. В нашем случае он очень простой случай. Мы просим клиента сгенерить этот ключ, и он в нашем конкретном примере будет беспокоиться о его, разумеется, идемпотентности. Вот о чём идёт речь. Ну, далее мы его сохраняем в BD э соответственно.

Теперь идём дальше. Мы с вами поговорили про, э, соответственно, а-а, идемпотентность. Мы поговорили с вами о том, а как обеспечить это всё, ээ как это выглядит в коде, в примере. Теперь пришла пора поговорить про Outbox pattern. Outbox pattern не супер сложная история, на самом деле, не сложнее, чем идемпотентный ключ. И, ээ, для этого у нас существует специальное событие, а, outbox event и база данных. Здесь давайте на примере, а, схемы я покажу, как это выглядит. То есть опять же у нас с вами есть э ID. Ну, понятное дело, если посмотреть, как он создаётся, мы опять же используем UI ID для генерации. Здесь вот, кстати, можно было бы использовать Hibernate, как конкретно для этого случая. Но опять же это пример, ясное дело, его нужно всегда улучшать. А, aggregate type у нас будет ордер. Это важно, поскольку, э, outbox события тоже необходимо каким-то образом анализировать, агрегировать. И чем больше метаданных вы заложите, тем легче вам будет этим всем управлять. А aggregate ID у нас, собственно, будет ID ордера. А здесь никакой информации об идемпотентности не надо, потому что уже идемпотентность позади. Далее мы устанавливаем event type. В нашем случае он здесь захардкожен, не самый лучший пример, но это и не принципиально. Мы видим, здесь написано order created V1. Откуда вот эта история order created V1 идёт? Это, друзья, идёт из API, который мы создавали, поскольку вот наш order created event версии 1. Для него мы используем так называемую JSON схему, которая описывает его структуру. Она не супер сложная. Мы видим, какие параметры required и так далее. Какие additional, есть ли additional properties или нет. Ну, в смысле, учитываем их. А, и пошло перечисление, соответственно, э-э, этих всех, э-э, параметров. Затем эту схему, э, мы впоследствии можем использовать, э, на стороне э подписчика, который будет принимать запрос на организацию платежа и в том числе на нашей стороне, когда мы это будем отправлять. И опять же, друзья, это про декаплинг между клиентным сервером и между подписчиком и публикующим, то есть продюсером. А, и вот так это выглядит. Это уже не Open API, это просто JSON схема. А можно, безусловно, представить это в YAML, вот так это будет выглядеть, но формат JSON. Затем можно, разумеется, из этого генерировать тоже DTO. Опять же, это требует кода, но это лучше. Лучше генерировать схему на основании, вернее, лучше генерировать код на основании схемы, чем писать код руками, а потом его везде править. Таким образом можно обеспечивать версионированность и автоматизацию и стабильность.

Далее, разумеется, когда мы идём по Аутбоксу, здесь у нас не супер всё сложно. Мы с вами видим следующее. Мы создаём ивент, заполняем его. Event type - это, по сути, имя ивента и его версия. Ещё немаловажно, можно версию включить непосредственно в метаинформацию схемы, но всего лишь один из приёмов. Как это реализовывать, есть множество разных способов, но так или иначе, вы должны выяснить одно. Любая, друзья, схема должна обладать версией, потому что благодаря версии вы сможете идентифицировать совместимость или несовместимость двух коммуницирующих объектов между собой. Далее мы туда упаковываем payload, который, собственно, должен быть затем отправлен в сторону а подписчика. И, соответственно, статус, что это new. Это как раз вопрос, который был задан с самого начала. А нам нужно полить ивенты. И мы, на самом деле, в моей реализации мы это и делаем. Это не самый крутой вариант, но какой есть, он самый простой. Э, у нас есть простой event репозитории, outbox event repository. Мы достаём топ-50 с статусом new и затем тупо, но рабочая схема, а в цикле начинаем их в кавку посылать. А в качестве схемы для кавки мы используем, а payload, тот самый, который сохранён вот здесь, да, мы видим event ID и прочая история, то есть вот он такой сокращённый. А далее, разумеется, мы используем event type, потому что event type - это для нас, в том числе, топик, который мы с вами создали, потому что все вы знаете, в кавке есть топики. А, и aggregate ID, собственно, это, безусловно, ключ, потому что нам необходимо с вами по ключу это всё дело потом э выбирать. Напоминаю, что в нашем случае aggregate ID - это, друзья, order ID, они эквивалентны. Вот. Не супер всё сложно. Затем просто обновляется статус э самого ивента и обратно он сохраняется в Outbox Event repository. И в моём случае они уже все S. Ну, потому что это был просто банально пример, который я тестировал. А если посмотреть, соответственно, в Кавку, вот она моя красивая. А, откроем, посмотрим топики. Вот у меня есть топика, а, целых три штуки. И мы видим, что у нас есть вот три сообщения. И одно из них последнее, как раз давайте посмотрим, это тот самый месседж, вот его э структура. Обращаю внимание, что здесь мы затрагиваем с вами, а событийноориентируемое проектирование. И вы наверняка удивитесь: "Макс, а почему здесь нету информации о элементах заказа?" Потому что на самом-то деле, если посмотреть, когда я отправлял запрос, а здесь был item, да, product id, name, quantity и Unit Price. Ну и всё. Но задайтесь вопросом, друзья, а зачем Payment-сервису знать, какие элементы есть внутри? Payment-сервисы интересует только одно: сколько нужно заплатить и куда заплатить, соответственно, и за что заплатить, чтобы сделать эту проводку. Больше ничего. Поэтому, когда вы используете событийно ориентированное проектирование, первым делом вам необходимо побеспокоиться о метаинформации. То есть событие имеет схему, разумеется, должно иметь версию. Второй момент, вам необходимо побеспокоиться о том, чтобы событие было как можно меньше, потому что передавать лишние байты - это тоже дорого стоит. Ээ это увеличивает в конечном итоге latency, ну то есть задержку так называемую и расходы на это всё. Поэтому отправляйте только те ивенты в том объёме, я имею в виду в то в той форме, в которой это действительно необходимо. Не нужно туда доставлять информацию, которую никто использовать не будет. А поэтому, чем проще ваши ивенты, тем, на самом деле, лучше.

Разумеется, э, теперь мы видим, что, э, в топике собрались события. Вот они здесь упакованы. Также здесь есть так называемый DLT, dead letter topic. Эээ, это на это на случай того, если не удалось по какой-либо причине обработать, отправить ээ сообщения, ну то не сообщение, а события. Такое тоже случается. Это не предмет сегодняшнего разговора, а но это всегда нужно предусматривать. Таким образом, мы видим, как работает наш не суперсложный outbox паттерн. Э, его реализовать намного проще, чем кажется, но есть множество нюансов, э-э, которые связаны, э, с обеспечением стабильности в коде. Один из них, ээ, э, вы уже подсветили грамотно, и мне это нравится. А, а что, если у меня нету записей в базе данных? А что, если записей очень много? А как часто мне ходить в базу данных? А что вот, допустим, в коде, как у меня здесь написано, что произойдёт, если вдруг в процессе отправки одного сообщения вылетит исключение. То есть получается, все 50 сообщений зафейлятся и, вернее, все 49 из одного зафейлятся. Ну, тоже странно. То есть это всё необходимо обрабатывать умело. Нужно выстраивать так называемую retry логику, нужно обрабатывать запросы и нужно умело управлять батчингом. То есть батчингом. То есть вам нужно выбирать из базы данных эффективно. Не обязательно это должна быть SQL, это может быть No SQL. Затем вам необходимо аа устойчивое хранилище временное и дешёвое. Главное для того, чтобы складывать задачи э туда. Ну, я сразу сказал, когда это был вопрос, можно использовать очередь дистрибутивную таким образом, что сначала вы готовите, вы отправляете события о том, что в очередь о'кей, ээ, пора бы обработать что-то, потом оно, разумеется, собирается достаточное количество ивентов, предположим, как вариант, а, и уже по их айдишкам выполняется запрос в базу данных, и вы сразу получаете все эти ивенты, которые вас не вам необходимы, либо все 50, либо 28, если время и стекло, это так называемое окно, а, и затем посылаете их дальше уже в кавку есть и другие механизмы, как это делать. Ээ мы можем это обсуждать бесконечно долго, но это не тема сегодняшней нашей встречи. А это я вам оставлю на подумать. В любом случае, где-нибудь на каком-то вебинаре мы это, друзья, с вами затронем. Вот так вот. А, безусловно, что ещё хотел ответить, отметить, необходимо, друзья, на каждом Чихе предусматривать транзакцию, потому что мы с вами в самом начале говорили про, э, ролбеки и коммиты, атомарные операции. И крайне важно save order savebox сделать как одну атомарную операцию и только после этого выполнять уже, соответственно, все остальные операции, связанные с отправкой сообщений в сторону платёжного сервиса или какого-либо другого сервиса. В этом и суть Outbox паттерна. Именно по этой причине у нас с вами стоит аннотация transactional. А, и здесь у нас есть, допустим, для получения данных у нас с вами есть transactional в режиме read only. Поэтому это всё учитывайте. Если вы используете Spring, нужно использовать transactional manager для этого, ну или Hibernate, точнее хотел сказать Hibernate и не Spring в комбинации со Spring. А нужно использовать менеджер для транзакции, этим умело управлять либо отлаживать ээ какие-то кастомные, я бы сказал бы, ручные способы организации транзакционности и управления ею. Там есть разные подходы, но опять же это не тема сегодняшнего а вебинара. Ну, это то, на что бы я бы хотел бы обратить ваше внимание. Вот так вот, друзья.

Что ж, мы подошли с вами к концу. Это то, что я вам хотел показать, э, рассказать. Эверен, э, теперь многие из вас ээ смотрят абсолютно иначе на тему, связанную с микросервисами, что, во-первых, HTTP REST - это неплохо, просто нужно правильно с ним работать и предусматривать хороший устойчивый API и все кейсы. То есть нужно правильно проектировать до того, как его реализовывать. А во-вторых, асинхронная коммуникация небезопасна, как её пытаются представить в современном обществе, во всяких ютубах, линкидынах и не только рассказывает, что асинхронная коммуникация решает всё. Нет, друзья, она не решает всё. Она тоже имеет свои проблемы, которые необходимо, разумеется, предусматривать и правильно решать. С другой стороны, мы с вами поговорили о таких вещах, как гарантия доставки. В нашем случае это at least once, то есть как минимум один раз сообщение будет отправлено, не доставлено, а как минимум один раз отправлено. Это важно, потому что at least once - это гарантия доставки. То есть вы в буквальном смысле говорите о том, что клиент может отправить сообщение или продюсер может опубликовать сообщение несколько раз. Это нормально. И вы, разумеется, должны обеспечивать нормальную гарантию доставки, которая учитывает этот фактор. Это наиболее распространённая гарантия доставки. Она имеет, а, плюсы и минусы. Но опять же, она наиболее распространённая. Есть также другие, но мы сегодня про них э говорить не будем. Вот так вот, друзья.

Что ж, давайте я отвечу на ваши вопросы, э, и, пожалуй, мы сможем, э, сегодня уже закрыть нашу сессию, э, и разойтись. Между тем, пока вы пишите свои вопросы, э, друзья, в этом ничего сложного нет. Как вы видите, есть проблема и есть решение. Всегда нужно подходить к этому грамотно, прагматично. Сегодня есть всякие AI тулы типа chat GPT, клоды, которые позволяют вам, а, по крайней мере, предложить решение, как это можно использовать. Поэтому, а, совокупно, используя знания, реальную практику, современные тулы, каждый человек способен это сделать. Если вы хотите научиться делать так же, как я, ещё раз повторяюсь, врывайтесь в учебный центр IP. Там есть два суперкурса, один по микросервисам, по шаблонам проектирования, а второй курс - это командная разработка, где вы научитесь не только разрабатывать, но проектировать ээ микросервисную архитектуру и её потом деплоить в куберней.

Так, давайте пройдемся быстренько по вопросам. Закидывайте в чатик, друзья. Э на всё постараюсь ответить. Так, по поводу проекта мы уже говорили, что я его опубликую в гитхабе. Наверное, сам простой вариант просто подпишитесь на меня в GitHub, в Гитхабе и всё. То есть мой аккаунт, он публичный. Я по-любому это буду публиковать, просто приведу в порядок. Так, про айдишку мы поговорили. Э как гарантируется уникальность идемпотентных, э, ключей. Про уникальность мы уже затрагивали тем, что а уникальность ээ гарантируется тем, что такие тулы, э вернее, такой стандарт, как UI, UUID, он довольно-таки имеет хорошую, э, вы имеет стабильную уникальность. Это не гарантирует уникальность, э, но в целом на него можно положиться. С другой стороны, если вы проектируете э системы, э, то, безусловно, вы должны учитывать, что может при масштабировании или при супербольших нагрузках произойти так, что два разных экземпляра, даже не связанных между собой, могут сгенерировать одну и ту же айдику. А в таких случаях, а, кстати, у меня есть забавно, э, вот как раз есть книги по системному дизайну и вот в этот Volume 1 синенького цвета, который отображается, это реклама, но не суть. В этой книге есть классный один из один вопрос по системному дизайну связан с проектированием генератора уникальных айдишек. Собственно, в таком случае вам нужно будет создать сервис по генерации уникальных айдишек, который позволит вам обеспечить максимальную стабильность и уникальность даже при распределённых системах. Ну, это отдельная тема. Поэтому вариант один, э-э, номер один: положиться на UIID и молиться, что при большой нагрузке не будет одного и того же, аэ, одной и той же айдишки. Эээ, второй момент, открыть книгу по системному дизайну, System Design Interview Alex Volume номер один синего цвета и разобрать тему, которая называется, а генератор уникальных чисел в дистрибутивных системах. Аэ, третий вариант. можете открыть мой GitHub, а эта штука у меня реализована, на самом деле. Можете спокойно открывать мой GitHub публичный, я имею в виду. И у меня вот этот генератор айдишек там есть. Там это довольно-таки простая система, можете там смотреть. А, но там про код, а не про дизайн. Но тем не менее вы поймёте, как генерировать уникальные дишки. А так, едем дальше. Едем дальше, друзья. М тактактак. гарантируется гарантируется распределение вероятности по всему диапазону ID очень надёжный. Да, это правда. Это то, что я говорю, он очень надёжный. А действительно, в него заложено э очень, ну, короче, энтропия, как я уже говорил, там довольно-таки на высоком уровне, но может произойти ситуация всякая, что не будет. Он уникальным, потому что UI U ID не учитывает масштабирования имён, которые создаются. Он не учитывает availability zone в кладах, он не учитывает регионы. И представьте себе, что у вас 20 экземпляров одного и того же сервиса под сумасшедшей нагрузкой, которые расположены в разных зонах, поэтому шанс есть. Понятно, энтропия высокая, но шанс всё равно есть. А точнее глубокая, не высокая, глубокая.

Как аналитику делать на простых ивентах? Ну как, это вопрос отдельный, я бы сказал бы. Аналитика, а, как правило, для аналитики выделяется отдельные базы данных, э, зачастую no SQL. Почему? Потому что SQL плохо для этого подходит. Аналитика имеет нестандартизированную структуру. Очень часто данные присутствуют, отсутствуют. Поэтому проще обратиться к структурам, которые не привязаны, вернее, к к базам, которые не к хранилищам, которые не привязаны к конкретно устойчивой структуре. Э затем, как правило, туда сохраняются данные в той форме или в том объёме, в котором нужны. И уже, разумеется, другие сервисы ээ на основании этих аналитических данных проводят ээ свои опера, вернее, на основании этих данных делают аналитику. А есть ещё вопрос того, а как обновлять данные, которые связаны с аналитикой, если они ещё в рантайме меняются. Для этого нужно организовывать что-то вроде CQRS паттерна. Это очень как бы не супер это очень популярно на собеседованиях. Очень много слышу об этом на ютубах, но пока что я нигде не видел, чтобы кто-то это реализовывал. Ну, должна быть, это должен быть очень серьёзный кейс для этого. Если кратко, то так. Разумеется, аналитическую систему всегда необходимо рассматривать в контексте того, какая ставится задача, каких показателей, метрик мы хотим достигнуть, то есть SLO, SLA, и потом уже под это всё проектировать, иначе это как пальцем в небо. Если интересно, могу посоветовать книгу, э она называется в народе кабанчик красного цвета с кабаном, Data Intensive Application кэпмана, если я не ошибаюсь. Там как раз описывается о том, как, ну, не то, что проектировать, а что учитывать при проектировании систем, связанных с аналитикой. Тактактактак.

Event driven на RMQ. Реальность или ээ а вымысел? А почему? Как по мне, э, любая тула, которая позволяет асинхронно делать обмен сообщениями, э, собственно, она связ, вернее, она имеет место быть. Задача лишь в том, что именно реализует эта тула. Ну, допустим, Rabbit MQ, а Кавка, Amazon SQS, Amazon SNS, Amazon Kinesis, Кавкастри и многое другое. Google Pub/Sub, допустим. можно прочитать, ну, можно продолжать, э-э, бесконечно. У каждой этой тулы есть свои плюсы и недостатки. Это связано с тем, что они все реализованы по-разному. Это не делает их плохими и хорошими. Просто каждый ставит другую определённую задачу, которую он собирается решать. Асинхронность - это не задача. Асинхронность - это способ обмена сообщениями. Это не задача, это, по сути, коммуникационный шлюз. А вот и всё. И стратегия того, как обменивается клиент и сервер или подписчик и продюсер между собой сообщениями. То есть иначе говоря, ждёте вы ответ или не ждёте вы ответ. Вот и всё. Я имею в виду на свой же запрос, э, пока вы его не получите. Это и есть асинхронность и не и синхронность. Другое дело, что разнообразные тулы, допустим, Кавка, Rabit, K SQS, они реализованы по-разному. Допустим, Кавка, она в основе держит топики, э, которые позволяют потом делать отличные ретраи. Я имею в виду заново обойти топик, у неё балансируются эти топики. Партишины. Я это хотел сказать, что оно на основе партишенов оно основано. MQ, оно основано на очередях и на роутинге, что у вас есть разные очереди и есть, я бы сказал бы очень гранулярный способ, как организовать а роутинг сообщений по очередям в разных форматах. Fanout, peer to peer и так далее. SQS или Amazon. А иначе Amazon SQS иначе расшифровывается Simple Queue Service это по сути очень упрощённый Rabbit MQ под капотом очередь мы не будем говорить честная нечестная фальсификация это не суть важно что под капотом очередь и там вы используете подход peer to peer то есть вы не можете там делать никакие фанауты его можно конечно там костылями сделать при помощи других плюсов но цель другая как видите то есть То есть, условно говоря, у вас есть очередь, вы туда помещаете сообщение и потом на обратной стороне в порядке очереди той или иной клиенты или слушатели выбирают сообщения и их обрабатывают. Таких клиентов может быть много в результате масштабирования. Они вообще могут быть разными сервисами. Ну, конечно же, это неправильно. Странно, что в одну очередь складываются сообщения одного типа, а а затем, разумеется, эти сообщения прослушиваются а разными сервисами, абсолютно разными, потому что это просто работать так не будет, цель другая. Поэтому возвращаясь и отвечая на вопрос, э, первичный, имеет ли Event Driven на RMQ реализовывать? Конечно же, имеет. Но вопрос в том, какая задача ставится, что вы хотите. реализовать какие SLO, какие SLA, какие функциональные требования. И исходя из этого вы сможете, а выбрать соответствующий. А здесь могу сделать хинт. Если вы думаете в контексте того, вернее, как вы можете себя отличить от синир инженера, а и сопоставить со стаф инженером, с принципалом или с архитектором. Если вы всё ещё думаете, что нужно выбирать Rabbit MQ или Кавку, при этом ваша система не спроектирована и не предусмотрела гарантии доставки изначально и идемпотентные ключи, outbox паттерны, Data flow, как они будут пересекать от сервиса к сервису. Но вы уже думаете о кавке, то, поверьте мне, ээ, моему опыту вы ещё синьор. Почему? Потому что став он думает уже шире, принципал ещё шире, архитектор ещё шире. Э кавка, Rabbit MQ, э другие тулы - это только тулы. Это уже детали реализации системы, даже если вы не пишете код для Кавки. Это детали реализации системы. Сначала вы её проектируете, потом вы всё предусматриваете, и в зависимости от этого вы выбираете именно тулу, которая вас устроит, исходя из вашей системы, а не сначала делаете тулу а потом всё остальное. Иначе говоря, могу привести пример самолётом. Иногда самолёт строится вокруг двигателя. То есть сначала строят двигатель, а потом строят самолёт. Э, и из-за этого очень часто получаются страшные самолёты, большие, неуклюжие, с дефектами. А, то же самое с оружием для самолётов. Иногда строится самолёт вокруг оружия, орудий, ракет и так далее, неважно. А с другой стороны, другой подход, когда самолёт строится под конкретную задачу, и под эту конкретную задачу, разумеется, разрабатывается соответствующий двигатель, который интегрируется в этот самолёт, который отвечает требованиям, которым его, а, собственно, хотят видеть. Вот так вот, друзья. А, поэтому, да, а это можно можно использовать RMQ. В этом проблем никаких нету, но вопрос в том, что мы реализуем. Вот так вот.

Хорошо, друзья, э вижу, вопросы закончились. Ээ, если будет, пишите во мне ко мне в личку, не стесняйтесь. Ээ, я в активном, публичном, так сказать, доступе. Э если у вас будут вопросы, нужна будет какая-то краткая консультация, вы захотите что-то спросить, спокойно пишите, я с радостью отвечу. Если не отвечу быстро, не переживайте, я никого не игнорирую. Лучше всего просто написать: "Макс, привет, я был у тебя на вебинаре. Для меня это будет хорошим триггером, что о'кей, это не какой-то, так сказать, шарлатан-бандит. Э и это, безусловно, смотивирует меня ответить быстрее. Во всём остальном, друзья, большое вам спасибо за уделённое вами время. Мне очень было приятно вам рассказать, э, о том, чем занимается современная разработка, ввести вас курс на реальных примерах. какие микросервисы используются, каким целям они служат, и объяснить, что не супер-то и сложно их реализовывать. Просто нужно чётко понимать, что у вас есть требования, эти требования влияют на проектирование системы, и дальше, разумеется, вы можете спроектировать систему, а затем её правильно реализовать. А на сегодня, друзья, всё. Хорошего вам вечера. А завершение недели. Пока-пока. Увидимся на других вебинарах.