«Ребята из Google не знали о DevOps и просто придумали то же колесо сами» — конспект митапа по SRE
Зачем нужно SRE, когда есть DevOps, что такое SLO и бюджет на ошибки, каким компаниям точно не надо внедрять новую методологию, существуют ли джуниор-инженеры по SRE и сколько платят опытным. Об этом и не только говорили на митапе Слёрма «Профессия SRE: практика и мифы».
На YouTube можно посмотреть видеозапись встречи, а здесь мы приводим текстовую версию разговора с некоторыми сокращениями.
Участники митапа:
- Павел Селиванов — DevOps Engineer в Mail.ru Cloud Solutions. Строит DevOps, CI/CD-процессы.
- Артём Артемьев — Lead SRE в компании Inspectorio. Помогает девопсам жить хорошо.
- Марсель Ибраев — CTO «Слёрм».
Заметка на полях: Site Reliability Engineering (SRE) произносится на русском как «эс-эр-и».Марсель Ибраев (МИ): Что такое SRE: это технология, методология или профессия? Что такое SRE простыми словами?
Поисковик мне выдал прекрасные статьи, где объясняется, что это набор методов, показателей и предписывающих способов обеспечения надёжности систем. На вики-словаре есть не менее интересное определение: это обеспечение надежной работы систем, обеспечение бесперебойной доступности сервисов. После такого объяснения я, разумеется, всё понял и проникся, но всё-таки, что такое SRE простыми словами?
Артём Артемьев (АА): Ты давно читал про DevOps? Забей в поиске, прочтёшь почти то же самое. На самом деле SRE — это то, как в Google в своё время увидели DevOps. Получилось немного по-другому, но нечто очень похожее на DevOps.
Павел Селиванов (ПС): Тут я соглашусь. Google пишет, что SRE — это практическая имплементация методологии DevOps. И мне правда кажется, что это так.
АА: Проблема только в том, что у нас нет нормального определения DevOps. У каждого DevOps сильно свой. SRE — одна из разновидностей DevOps.
МИ: В Google, получается, взяли на себя смелость опубликовать своё видение.
АА: Кстати, интересно, что у Facebook тоже есть своё видение DevOps, просто Facebook об этом не написал книжку. Не рассказал, как у них это получилось. Но у них DevOps нет. У них operations отдается всем инженерам, все инженеры так или иначе занимаются operations. Но есть люди, которые занимаются инфраструктурой, и они называются продакшн-инженерами.
П: У меня даже есть идея, почему Google написал такую книжку, а Facebook нет. Потому что Facebook делает сервисы для себя по большей части, а Google — для других. И когда Google надоело, что пользователи их хают, когда сервисы работают нормально, они попытались объясниться.
М: Получается, Google переварил DevOps, в итоге у них родился Site Reliability Engineering. Но почему тогда концепция стала такой популярной? Просто бренд сыграл, или эта штука действительно хорошо показывает себя на практике?
АА: Многие конторы ищут Святой Грааль: «вот у нас всё плохо, но сейчас мы наймём DevOps и всё полетит». С DevOps не получилось, давай теперь переименуем его в SRE.
МИ: Звучит логично.
АА: Насколько популярно, не знаю. Думаю, если собрать статистику, в скольких компаниях есть SRE… У вас в Mail.ru есть SRE?
ПС: Да.
АА: Больше, чем DevOps?
ПС: Скорее всего, да. Больше ли, чем админов — я не уверен. Mail.ru придумала, как работать хорошо, задолго до появления Docker, SRE, DevOps и всего прочего. А так как компания большая, смысла менять своё на новое и хайповое нет. Это огромные усилия. Поэтому мы по многим, особенно глобальным вещам живём на наших внутренних регламентах и инструментах. А ими занимаются сисадмины.
МИ: Непопулярно.
ПС: Зато работает.
АА: Я ещё вижу в реалиях русскоговорящего рынка, что у нас есть проблема — никто не понимает (по крайней мере, мало кто понимает), что есть проблема с DevOps. Что мы должны получить от внедрения DevOps? Как правило, все говорят про Continuous delivery, сбор метрик.
МИ: Ну да, построили пайплайны, и у нас как будто построен DevOps.
АА: Но по факту выходит, что метрики все зеленые, а пользователи жалуются. Инженеры говорят: «всё хорошо, всё работает».
В Google придумали, что нужно подойти к пользователю как можно ближе, и важны не показатели, а SLO, которое получает пользователь. В итоге в компаниях возникает необходимость нанять еще девопсов, которые будут делать похожую работу, но по-другому. И как их назвать? О, давай назовём SRE.
МИ: Получается, SRE — это реинкарнация, нечто, что получило физическую оболочку в рамках Google. Был некий DevOps, который все понимали по-своему, и Google не исключение, они тоже поняли это по-своему, набили кучу шишек и пришли к подходу, который назвали Site Reliability Engineering.
АА: Когда Google начал выдумывать SRE, ещё DevOps не был объявлен (хотя о нём впервые заговорили в 2000 году где-то во Франции, но это было ещё не широко). Ребята из Google не знали о DevOps, просто придумали то же колесо сами.
ПC: Мне тоже кажется, что DevOps был придуман в рамках каких-то встреч и конференций (как и Agile манифест в своё время), когда люди собрались и начали думать, как сделать так, чтобы всем стало хорошо. Собрались, придумали, и кто-то дальше эту идею развивал. А Google к этому подходил иначе, с точки зрения своих внутренних проблем. Они решали конкретную задачу, да, возможно, ту же самую задачу, что и комьюнити, и очень похожими средствами, но задача была полностью практическая. Нужно было решать конкретные вещи в конкретные сроки и конкретными действиями.
МИ: Означает ли это, что концепция SRE и весь его инструментарий подойдут далеко не всем? Если заработало у Google, не факт, что заработает у других?
АА: Аналогично и для DevOps. Но смотря про что говорить. Если про то, что надо мерить SLO со стороны пользователя, наверное, это почти всем подойдет. Если про подход «катись как можно чаще», а ты запускаешь космические корабли, то катиться как можно чаще — дорого и непонятно, надо тестировать больше.
МИ: Да, ко всему нужно подходить с головой и с пониманием, что ты делаешь, а не просто гнаться за хайпом.
Кто такой SRE-инженер? Почему это больше разработчик, чем админ
МИ: SRE называют концепцией или методологией, а это, я бы сказал, слова-паразиты, потому что сейчас так называют что ни попадя. Если мы говорим, что SRE — это ряд конкретных практик и решений, придуманных в Google, было бы интересно послушать, чем конкретно должен заниматься SRE-инженер. Можно описать типовой день или неделю. Что он должен делать, какие у него обязанности?
АА: Google приводит сравнение SRE и DevOps. Там перечисляются все эти пункты и оказывается, что всё матчится друг в друга. Но самая большая разница, о которой говорит Google, — они не нанимают operations или админов.
Они решили везде нанимать software engineer, которые умеют программировать которые очень ленивые, ничего не любят делать руками и чуть что пишут код. Но Google может себе позволить найти software-инженера, который очень хорошо разбирается в сети, системе, производительности и т. д.
В масштабах Google очень важно автоматизировать всё, что можно автоматизировать. Когда у тебя десять серверов — можно сделать всё руками, а когда миллион — тут уже не выйдет. Плюс человек умеет ошибаться, а робот нет. Так что принципиальная разница заключается в том, что мы нанимаем инженеров, которые пишут программы, чтобы те менеджирили operation-задачи.
МИ: То есть глобально SRE-инженер занимается автоматизацией?
АА: Старается заниматься. Ну и DevOps тоже. Большая задача SRE — уметь падать и быстро чиниться. Та самая концепция Error budget.
Когда у тебя маленький стартап и не так много клиентов, ты быстро деплоишься, быстро бежишь, что-то сломал, но тебе не очень больно. Тебе важно донести ценности до пользователей и не страшно сломаться. Но на уровне Google все замедляется, все боятся что-то сломать. Темп доставки новых фич сильно уменьшается, все работают не спеша.
Концепция Error budget, когда сказано, что твой сервис 5% в месяц может быть сломанным, позволяет убедиться, что команда этого сервиса не замедлилась и бежит быстро. «Move fast and break things» — не бояться немного сломать, но в то же время экспериментировать и доносить нужные ценности. Это второй аспект. Возможно, он важен только компаниям размера Google. Когда у тебя небольшая компания, вы и так все мотивированы и бежите вперёд. Error budget вас сильно не спасёт.
ПС: Прикол именно в том, что SRE — это по большому счёту разработчик. Да, разрабатывать, естественно, это не единственная его функция, но именно майндсет разработчика, способность к разработке и реальный опыт программирования — одна из ключевых вещей в этой профессии.
Марсель, ты говоришь, что SRE-engineer — это человек, который должен заниматься автоматизацией. Мне кажется, это может вводить в заблуждение, потому что под словом «автоматизация» мы часто понимаем набор скриптов, который сделает grep в логи, положит в такой-то файлик, а дальше этот файлик по TCP отправит туда-то — вот это автоматизация. Однострочник на Bash, скриптик на Python и так далее. Просто с этой точки зрения любой разработчик тоже занимается автоматизацией, но почему-то его работу мы автоматизацией не называем.
SRE — все-таки такой автоматизатор, который не скриптики пишет (не только их, потому что для любого админа тоже никогда не было проблемой написать скриптик), но имеет майндсет разработчика и рассматривает проблемы инфраструктуры как софтварные проблемы, которые можно и нужно решать с помощью кода.
Все эти инфраструктурные инструменты, которых за последние лет пять появилось огромное количество, — начиная от Kubernetes, системы мониторинга, кучи экспортеров того же Prometheus — они гораздо сложнее, чем просто скрипт автоматизации. И вот эти все системы, мне кажется, появляются в том числе благодаря развитию SRE как направления и тому, что инфраструктурными задачами начинает заниматься разработчик.
Странно было бы заопенсорсить свой набор из миллиона bash-скриптов, zabbix-шаблонов и прочего. Вывалить это всё на гитхаб и сказать: «вот, ребят, мы за десять лет существования компании накопили вот такую кучу — нате». Понятно, что это ни у кого бы не взлетело. А вот инструменты, которые делают разработчики для поддержки инфраструктуры, они действительно новые и полезные.
Поэтому мне кажется, важно обращать внимание, что SRE — это такой человек. Не факт, что это человек прямо из разработки, из админов тоже бывают SRE. Просто админ тогда должен быть такой, который имеет достаточный опыт разработки, в том числе и продакшн, промышленной. И прям хорошо и плотно в это погружён.
МИ: То есть SRE-инженер, как правило, из разработки. Появляется проблема, и он смотрит не на то, как это закостылить, а на то, как автоматизировать, и может написать программу или приложение, которое всё это будет обрабатывать. Ещё я слышал, что с SRE связаны системы мониторинга доступности, чтобы у нас приложение было доступно и соответствовало неким метрикам. Это тоже задача SRE-инженера? Его задача эти метрики настраивать, отслеживать — как он с ними работает?
АА: Метрики отслеживать — не задача инженера SRE. Моя задача как инженера SRE — сделать инструменты для команд, чтобы они понимали, сколько у них осталось SLO, почему он уменьшается и как выглядит работа их приложения, конкретного сервиса этой команды для конечного пользователя: какой был latency, сколько было ошибок и как это всё выглядело.
Они ко мне обращаются за помощью, когда видят, что тает их SLO и они не понимают почему. На авторизации логины стали длиннее на пару секунд, и они считают это нормальным, но это выпало из SLO, начинает выпадать из допустимого latency. Ко мне прям прибегали ребята из сервиса авторизации и спрашивали: почему у нас SLO тает, «вчера было 3 секунды, а сегодня 3,5 секунды — ничего страшного же». Но если вы договорились, что должно быть 3 секунды, то, ребят, извините.
Что такое SLO, SLA и Error Budget
МИ: А можешь расшифровать, что значат SLO, SLA, SLI?
АА: Думаю, все слышали про SLA (Service Level Agreement) — это договор с любой компанией об уровне предоставления услуг, где компания обязуется, что 99% времени некий сервис будет работать.
МИ: Например, сервер на хостинге? То, что мы берём в аренду.
АА: Например, строка поиска в Google. Забиваешь, что нужно найти, а он тебе ищет. SLA там 99%. То есть Google сам говорит: зуб даю, что 99% будет.
При этом инженеры боятся, что они могут ошибиться и не попасть в эти 99%, и будет совсем больно. Поэтому внутри, у себя в команде, они договариваются: вот мы хотим, чтобы было 99.9%, тогда у нас есть в запасе 0,9%, и мы точно попадём. И вот этот их внутренний договор называется SLO.
МИ: Значит, SLA — для внешних, а SLO — внутри.
АА: И считается SLO по запросам от пользователя, как правило. Чем ближе к пользователю подошел, тем лучше. Идеально, если в java-скрипте тусуются отдельные элементы в браузере, и этот скрипт репортит куда-то о том, что не удалось аджаксом скачать какой-то кусочек элемента. Потому что часто, если у нас упал самый главный nginx, то это у нас в nginx логов нет, значит запросов нет, latency хорошие, всё хорошо. А тут java-скрипт начнет говорить, что есть ошибка. Либо, если это мобильный клиент, он прямо с мобилки сыплет свои ошибки, это просто идеально: мы всё знаем и считаем.
И есть ещё SLI (Service Level Indicator) — это те параметры, о которых мы говорим. Например, задержка для клиента, как быстро он скачал страницу — это один SLI. Либо количество ошибок, сколько клиентов у нас получили пятисотый статус ответа вместо двухсотого — это второй SLI. Вот два очень распространенных SLI: latency и количество ошибок.
М: Ну и про Error budget расскажи. Я так понимаю, это некий бюджет, который закладывается на ошибки, на простой. Если команда разработки и в целом проект его превышает, то что-то происходит. Правильно ли я понимаю?
АА: Когда мы зафиксировали SLO и сказали, что обязуемся, чтобы 99.9% запросов валидно ответили пользователю, то у нас остались 0.01% запросов к сервису, которые могут пофейлиться. Если у нас там миллион запросов, то 0.01 от миллиона считаем. Это и есть наш Error budget или бюджет на ошибки.
Когда у нас есть в запасе эта цифра, мы в некоторых ситуациях можем не думать, что написали код, который не очень протестирован. Если у нас полно Error budget, мы можем не тратить ещё неделю на тестирование кода, а прямо сейчас выкатить его, потому что нам очень надо посмотреть, как он работает (понятно, что при этом мы должны уметь быстро откатываться и выкатывать код не на всех пользователей, а на 5%). Если код начал валиться, мы его откатили, перестали вести на него трафик и немного потратили своего Error budget. Но это позволило нам очень быстро проверить гипотезы и доставить ценности.
С другой стороны, если мы полностью потратили свой Error budget, нам нужно очень хорошо тестировать код и смотреть, на что мы его потратили: если у нас часто отваливалась база данных, то самое время отложить бэклог и заняться автоматическим переключением баз данных на slave.
ПС: Мне кажется, Error budget ещё очень полезен для оценки, какие решения сейчас нужно внедрять, в каких решениях назрела необходимость. Предположим, у нас есть сервис, который в теории доступен 100% времени. Он работает без ошибок, мы его не разрабатываем или нечасто деплоим, новые ошибки туда не приезжают. А когда мы его деплоим, у нас нет никакого rolling updates и вот этих всех модных штук, мы просто выключаем и включаем заново. И смотрим, что, например, генерируем таким образом энное количество ошибок.
При этом мы понимаем, что если деплоим раз в какое-то количество времени, то, даже несмотря на то, что никакой системы rolling updates нет, такие деплои за рамки Error budget не выходят. И это такой прекрасный показатель — сказать, когда команде нужно задумываться о технических вещах. Вот сейчас назрел момент, мы начали выходить за Error budget, давайте его пофиксим хотя быть тем, что начнём выкатываться без простоя. Или мы действительно можем выкатываться с простоем.
SRE-инженер — это клей, а SRE — это хайп?
МИ: Если всё сложить, то получается, что SRE-инженер — это некий человек, который мыслит одновременно и в плоскости инфраструктуры, доступности приложений и в плоскости разработки. Некий «клей», который связывает эти два дела и думает больше о конечном клиенте и доступности, чем о написании кода или настройке Terraform и подобных вещах. Он вне рутины и визионирует эти процессы.
ПС: С точки зрения DevOps мы стремимся сделать некую инфраструктуру и создать такую ситуацию, в которой за свои приложения, в том числе и в продакшене, отвечает команда разработки. Команда сопровождения в таком случае поддерживает инфраструктуру и какие-то общие вещи, типа кластеров баз данных, кластеров очередей. Отдельная команда в виде девопсов или сама команда сопровождения реализует способы максимально автоматической работы для разработчика: доставлять свой код до продакшена, тестировать и так далее.
То есть, в DevOps команда разработки уже отвечает не только за то, чтобы код написать, кинуть админам и сказать, «нате, деплойте», админы там подеплоят, поймут, что ничего не деплоится, вернут разработчикам; разработчик скажет: «у меня работает, у вас не работает, идите разбирайтесь» — классический конфликт. В рамках философии DevOps разработчик отвечает за свой код: и написание, и его работу в продакшене.
В таком случае SRE-инженер — никакой не клей, а админ, который теперь отвечает не только за работу в продакшене, но в том числе и разбирается в коде. И нет никаких разных целей у отдела сопровождения и отдела разработки. Есть одна цель — рабочий продукт, который нужно сделать. Это не тот продукт, который никогда не падает (сервер, отключённый от питания, тоже никогда не падает) рабочий продукт — это штука, которая приносит деньги компании. А для этого он: а) должен работать, б) должен обновляться. Так что отделы разработки и SRE реализуют одну цель.
МИ: Окей, с задачами SRE разобрались. Теперь другой вопрос: шумиха вокруг SRE — это хайп, или все-таки у подхода есть реальное будущее? Второй Kubernetes или временное явление?
АА: Сложно сказать, DevOps — это хайп или уже не хайп? Наверное, уже не хайп. Но если SRE — это случай DevOps, то кто-то будет его использовать, а кто-то нет.
МИ: Мне кажется, хайп спадет, но останутся те, кто нашёл в этом пользу. На первый план выйдет что-то другое.
ПС: Как называть это в будущем — SRE или DevOps — это уже проблема будущих людей, а вот что инфраструктурой начнут заниматься люди, которые с руками, с головой и умеют код писать — думаю, это весьма вероятно.
МИ: Меня пугает, что компании ищут людей, которые на все руки мастера. Могут и код написать, и инфраструктуру поднять, и винду настроить, и принтер починить. Просто сисадмины уже теряют актуальность. Возможно, в будущем просто разработчики тоже будут терять актуальность? Или нет?
АА: Тут сложно говорить, потому что компаниям нужна стабильная работа, а как называются те, кто умеет делать твой сервис стабильным, неважно. Просто в какой-то момент сисадмины поссорились с разработчиками, зависели друг от друга, но не договаривались. Тогда придумали DevOps, чтобы подружить их, и для бизнеса DevOps стал очень выгоден: со всех сторон бенефиты.
В какой-то момент DevOps чуть-чуть изменил свой курс от того, что ребята придумывали, и теперь он больше про деливери и измерения, инженерный аспект разработки. Он ушёл далеко от ощущений самих пользователей.
По сути, DevOps может делать и работу SRE — измерять значения максимально близко к пользователю и знать, как часто сервис падает. Но в текущих реалиях DevOps немного не про это. Случилось культурное изменение. И тут на сцену выходит SRE, и компании понимают, что им нужен ещё один DevOps, но он будет не DevOps, а SRE. Очень часто люди, работающие над DevOps и SRE могут быть взаимозаменяемыми.
ПС: Вот ты Марсель говоришь, «человек, который умеет всё». Но я не согласен. Артём, как ты думаешь, бывают ли джуниор SRE-инженеры?
АА: Думаю, даже бывают SRE-интерны.
ПС: Наверное, бывают разных способностей люди. Если есть какая-то система обучения SRE, то интерна можно себе представить. Но по моему опыту, SRE-инженер — это такой человек, который видел разработку (если он со стороны разработчика, то минимум стал мидлом), который занимался многими вещами в компании, в том числе видел администрирование и сопровождение — представляет, что там ребята делают.
Поэтому прийти и в первый год работы всего этого набраться, будучи джуниором SRE, мне кажется, вряд ли возможно. Нужно специальное место, где учат только SRE. Поэтому, это, скорее, не человек, который всё умеет, а человек, который достаточно опытен и при этом по своим софт-скиллам сложен таким образом, что разбирается в проблемах, в том, в чем он работает, и способен с этим работать комплексно.
Как внедрить SRE в компании
МИ: Внедрение SRE, как и DevOps, — это революция или эволюция? Стоит ли пушить решение о том, что нам нужен SRE или DevOps в компании?
ПC: SRE — это всё-таки конкретная, понятная методология, и в ней должна быть потребность. Поэтому путь внедрения SRE эволюционный. Cделать SRE из состояния «мы классическая компания, у нас половина на железных серверах, половина на ноутбуке под столом» я боюсь, что не выйдет. Потому что будут люди, которые скажут, что это абсолютная фигня от смузи-админов, разработчиков в узких джинсах и т. д.
Мне понравился доклад на одной из конференций. Там был тезис, что DevOps нельзя внедрить насильственно. Единственный вариант — разогнать всю команду и набрать другую из людей, которые с DevOps знакомы. А чтобы никого не разгонять, надо взять несколько админов и послать на DevOps-конференцию. Пусть они послушают, поплюются, расскажут всем, что это фигня. Взять потом других админов или разработчиков, отправить туда. И постепенно за годик-два компания начнёт гореть идеями DevOps — и со стороны разработки, и со стороны администрирования. Тогда команды сами придут к бизнесу и скажут: «Чуваки, мы тут такую штуку знаем, давайте мы её внедрим». Из такого состояния SRE можно, пожалуй, считать революционным. Но когда нет никакого движения, никакой основы, то ничего не получится.
АА: Я вполне согласен с Павлом. Ещё часто SRE, как и DevOps, могут заносить сами владельцы бизнеса, которые хотят стабильности. Но насильно в инженера не занесёшь, надо продать, а продать тяжело, если кто-то упирается.
ММ: Мы сейчас по большей части поговорили про инженеров-разработчиков. Есть ли у вас представления, на какие аспекты работы проекта стоит обратить внимание с бизнесовой части? Как бизнес может понять, что им нужен SRE или какой-то другой подход в управлении проектами?
АА: Тут всегда простой вопрос — как чувствуют себя пользователи? Например, если пользователи жалуются, а графики все зеленые.
ПС: В целом да.
SRE — это же одно из возможных решений. Если есть проблема с доступностью сервиса, стабильностью, можно задуматься об SRE. Или в то же время задуматься о введении каких-нибудь KPI, кнутов на входе, и начать разработчиков бить за баги. Тоже как вариант, наверное, тоже может работать. SRE точно не будет серебряной пулей, которая спасёт от всего. Но вот проблему стабильности, проблемы в организации IT-команды, когда есть классический конфликт между администрированием и разработкой, решить поможет.
Что должен знать SRE-инженер и сколько может зарабатывать
МИ: Как вообще вот этим мифическим SRE-инженером стать? Что нужно сделать? Какими скиллами обладать, чтобы претендовать на такую позицию?
ПС: Я недавно размышлял над этим вопросом. Думаю, особенно у нас, в России, есть проблема. Вот если бы конкретный живой человек спросил у меня, я бы ему рассказал об определённых вещах, на которые нужно посмотреть. Он бы пришёл в первую попавшуюся компанию, где нужен SRE, а ему бы начали задавать вопросы о рейдах, например, или еще каких-то странных вещах. И тут вопрос: когда вы в современной компании последний раз видели живой рейд и зачем? Наверное, это полезно знать, но честно — мне это сейчас не нужно в моей работе, и я на эти вопросы не отвечу. В большинстве случаев это не задача SRE. Есть, конечно, системщики, которые этим занимаются. Но у большинства компаний не железные сервера, а есть какое-то облако, купленное или свое, и приложение нужно эксплуатировать в рамках этого облака.
Программирование нужно при собеседовании точно. Я вот недавно общался с коллегами из Тинькова, и они сказали, что админы приходит на позицию SRE, их начинают спрашивать про какие-нибудь бинарные деревья, и они прям обижаются — я же админ, зачем меня по программированию гонять?
Современные DevOps-инструменты типа infrastructure as code, инструменты оркестрации, как Kubernetes, инструменты мониторинга — Prometheus, Grafana, возможно, и Zabbix всё еще бывает полезен. Docker. Это основной технологический список. Но очень важно то, в какую компанию вы придёте. Если ей нужны настоящие SRE, то с этим списком, скорее всего, получится пройти. Если нужны переименованные админы, то у вас начнут спрашивать про рейды и так далее.
АА: Я бы добавил, что Network тоже важен для SRE, потому что твои сервисы включаются по сети. И она, возможно, не ARP.
МИ: Да, есть такое. Я про это даже как-то рассказывал, что ездил в EPAM в гости, и мне жаловались, что сейчас растёт поколение девопсов, которые делают банальные ошибки, связанные с сетью.
МИ: Требуется ли делать упор на умение программировать как таковое или всё-таки надо знать какой-то конкретный язык?
ПС: Программирование как таковое — это когда вам объяснили на Паскале в институте общие принципы программирования, циклы, операторы, ветвления? Нет, этого будет недостаточно. Но я знаю, что нормальный программист довольно легко переходит с одного языка на другой. Особых требований к языкам нет. Есть более популярные и менее популярные.
МИ: Стоит ли учиться программированию по книгам?
АА: Мне кажется, более ценно учиться в сервисах, которые тебе предоставляют задачку и окошко, куда нужно писать код, а потом можно в соседнем окошке посмотреть решение и обсуждение, как люди до тебя пришли к этому коду.
ПС: Я думаю, про языки проще найти готовые курсы, туториалы и документацию, если язык не первый. Книжки — это скорее основы, которые в институте проходят. Но они довольно медленно устаревают. Тот же «Чистый код» читать — это хорошо.
МИ: Что конкретно должен уметь «кодить» SRE? В какую сторону смотреть?
ПС: Я могу дать конкретный пример. Prometheus работает по следующему принципу: у него есть экспортеры (штуки, которые собирают данные систем и предоставляют их в формате, понятном для Prometheus), он приходит к экспортерам и собирает данные. Такая нормальная задача SRE была бы — взять какую-нибудь часть системы, у которой всё еще нет опенсорсного решения, и сделать для неё один из экспортеров в Prometheus, к примеру. Или сказать разработчикам: «Ребята, у нас там система сбора логов такая-то, а давайте вы все будете собирать логи и писать их вот в опредёленном виде, и вот вам для этого библиотека. Встройте её во все свои приложения». Библиотека для таких системных вещей типа логи, трейсинг и так далее. Тоже вполне нормальная задача для SRE-инженера.
МИ: Сколько зарабатывает SRE в России? У меня под рукой нет данных, но думаю, зависит от компании и требуемых скиллов.
ПС: Я тоже без понятия, но в целом про зарплату могу сказать так: когда я только начинал заниматься сопровождением, админы чаще всего получали меньше, чем разработчики на одинаковой позиции. Сейчас DevOps, SRE получают или так же, как разработчики, или больше, потому что и скилла нужно больше. Так что посмотрите на Хедхантере, сколько в среднем получают разработчики, и делайте выводы. Мне кажется, от 120-150 тысяч. Разумная верхняя граница, думаю, 250-300. Но границ, в принципе, нет.
Вакансии SRE на Headhunter
Что будет на интенсиве по SRE?
МИ: SRE — это про практику. И как раз об этом мы будем говорить на нашем интенсиве, который пройдет 11-13 декабря. Будет много кейсов, с которыми сталкивается SRE-инженер.
Там же мы рассмотрим на практике построение метрик, проблемы с доступностью и прочее, прямо своими руками, реальными инструментами. Павел уже упомянул экспортеры, Prometheus, графики. Будем всё это щупать, со всем этим разбираться.
ПС: Я еще про интенсив добавлю чуть-чуть. Мы пытаемся за три дня дать людям понять, что такое — быть SRE-инженером, пропустить это через себя. Показать три дня такой работы. Практику.
Мы дадим вам систему и будем её ломать и заставлять вас её чинить в коде, в инфраструктуре, смотреть на метрики, на логи, объясняться с пользователями и так далее. Мы показываем то, что написано в книгах Google об SRE через призму реальной работы.
МИ: Именно так. Там будут и Павел, и Артём. Еще к нам присоединится Иван Круглов. И мы все вместе будем во всем этом разбираться.
Блиц по вопросам из чата
SRE должен быть свой у каждой команды?
АА: Зависит от размера команды и важности сервиса, с которым она работает. Как правило, SRE обеспечивает платформу, инструменты и сервисы для того, чтобы команды могли скидывать свои метрики и видеть, как работает их сервис. В этом случае SRE просто обеспечивает некоторую прослойку между инфраструктурой и вашим сервисом, и в каждую команду свой SRE не нужен. Но допускаю, что может быть очень важный, либо достаточно большой сервис, куда неплохо бы выделить отдельного SRE.
Что, если сервис зависит от другого сервиса? Например, авторизации. Сервис авторизации падает сильно и надолго, это приводит к исчерпанию Error budget.
АА: Если ты зависишь от другого сервиса, ты не можешь написать сервис надежнее того, от которого зависишь. Но тут есть нюансы, потому что ты можешь ретраить некоторые запросы в рамках таймаута. Посылать сразу несколько запросов. То есть, если у тебя есть сервис, от которого ты зависишь, можно в него послать одновременно три запроса. И, возможно, один из них с большей вероятностью выполнится, чем просто один отправленный запрос. Либо ты можешь договориться с бизнесом и своими пользователями, 500-я ошибка — это точно ошибка. А 403-405 могут считаться не полноценной ошибкой, а в рамках предоставления сервиса. И когда недоступен сервис, от которого ты зависишь, ты своему клиенту отдаешь код ошибки, чтобы он знал, что нужно зайти позже. И это может считаться в рамках SLO, если договориться об этом.
ПС: Мне есть что добавить. Мы тут много раз говорили, что SRE-подход — это снимать все эти метрики доступности как можно ближе к клиенту. Но тут важно понимать, что у нас не просто есть тут какой-то большой сайт, который состоит из сотни микросервисов, и мы на стороне клиентов смотрим, что открывается главная страница.
Когда сервисы общаются между собой, они же все клиенты друг друга. Поэтому все эти вещи про SLO и Error budget распространяются не только на конечного пользователя. По сути, мы для каждого сервиса компании можем объявить свои SLO и Error budget, и каждый сервис обязуется для всех своих клиентов предоставлять этот определенный уровень доступности. Причем, можно говорить не только про сами приложения и про их метрики. Мы можем говорить и про другие системы компании с теми же уровнями. Если есть команда, которая занимается сопровождением баз данных, то она может объявить свои уровни и поддерживать их. Мы внутри компании постоянно этим всем пользуемся.
Более того, тут какой важный принцип в SRE — вместо поиска виноватых мы понимаем, что везде бывают ошибки и ориентируемся на то, чтобы жить в инфраструктуре, которая достаточно хорошо наполнена ошибками. И учим свои сервисы работать в таких условиях.
Имеет ли место SRE в компании с редкими релизами (раз в пару лет, например)?
А: Всё-таки это сделано в Google, и тут больше вопрос про надежность, а не про релизы как таковые. С редкими релизами имеет смысл собирать статистику, знать, насколько ты надежен, где что ломается и как это чинить. Можно просто два года подставлять костыли, чтобы через три года зарелизиться. Вопрос — зачем это надо, если мы все равно не можем починить быстро? Ну, можно чинить не быстро — тоже вариант, какие-то прослоечки делать.
Какие знания нужны, чтобы принять участие в интенсиве с пользой? Для начинающих или опытных?
МИ: Отличный вопрос. Крайне желательно иметь бэкграунд разработки. У нас приложение будет на Python и, если вы админ и кодили, и делали скрипты, наверное, вы тоже разберётесь. Но, как мы уже выяснили, все-таки SRE-инженеру нужен бэкграунд разработчика. Наши приложения будут работать в Kubernetes и крайне желательно с ним тоже уметь работать. Будем использовать Grafana, Prometheus.
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!--metatextblock-->
<title>Зачем SRE, когда есть DevOps? Метрики SLA, SLI, SLO. | Блог slurm.io</title>
<meta name="description" content="Профессия SRE: чем занимается SRE-инженер. Error Budget и работа с инцидентами, как проводить постмортем. | Блог slurm.io">
<meta name="keywords" content="">
<meta name="robots" content="index, follow" />
<meta property="og:title" content="Зачем SRE, когда есть DevOps? Метрики SLA, SLI, SLO. | Блог slurm.io" />
<meta property="og:description" content="Профессия SRE: чем занимается SRE-инженер. Error Budget и работа с инцидентами, как проводить постмортем. | Блог slurm.io" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://slurm.io/blog/tpost/h6ijdoo7c1-rebyata-iz-google-ne-znali-o-devops-i-pr" />
<meta property="og:image" content="https://static.tildacdn.com/tild3636-6238-4364-b038-316534636661/1_1.png" />
<link rel="canonical" href="https://slurm.io/blog/tpost/h6ijdoo7c1-rebyata-iz-google-ne-znali-o-devops-i-pr" />
<link rel="alternate" type="application/rss+xml" title="Блог Слёрм" href="https://slurm.io/rss-feed-784947206928.xml" />
<link rel="amphtml" href="https://slurm.io/blog/tpost/h6ijdoo7c1-rebyata-iz-google-ne-znali-o-devops-i-pr?amp=true">
<!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3464-3565-4434-a430-373739393736/ico.svg" media="(prefers-color-scheme: light)"/> <link rel="icon" type="image/x-icon" sizes="32x32" href="https://static.tildacdn.com/tild3535-3833-4738-b061-623531623164/ico.svg" media="(prefers-color-scheme: dark)"/> <link rel="icon" type="image/svg+xml" sizes="any" href="https://static.tildacdn.com/tild6162-3561-4239-b037-363439656331/ico.svg"> <link rel="apple-touch-icon" type="image/png" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="icon" type="image/png" sizes="192x192" href="https://static.tildacdn.com/tild6236-6662-4664-b736-623463326262/ico.png"> <link rel="alternate" type="application/rss+xml" title="Slurm" href="https://slurm.io/rss.xml" /> <!-- Assets --> <script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project705564/tilda-blocks-page13384934.min.css?t=1771492760" type="text/css" media="all" onerror="this.loaderr='y';" /><link rel="stylesheet" href="https://static.tildacdn.com/ws/project705564/tilda-blocks-page29874943.min.css?t=1771497556" type="text/css" media="all" onerror="this.loaderr='y';" /><link rel="stylesheet" href="https://static.tildacdn.com/ws/project705564/tilda-blocks-page13176281.min.css?t=1771497556" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&subset=latin,cyrillic&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-feed-1.1.min.css" type="text/css" media="all" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-slds-1.4.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" type="text/css" href="https://ws.tildacdn.com/project705564/custom.css?t=1771492760"> <script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script> <script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,r=[],n,l=i.getAttribute("data-artboard-screens");if(l){l=l.split(",");for(var o=0;o<l.length;o++)r[o]=parseInt(l[o],10)}else r=[320,480,640,960,1200];for(var o=0;o<r.length;o++){var d=r[o];a>=d&&(n=d)}var _="edit"===window.allrecords.getAttribute("data-tilda-mode"),c="center"===t396_getFieldValue(i,"valign",n,r),s="grid"===t396_getFieldValue(i,"upscale",n,r),w=t396_getFieldValue(i,"height_vh",n,r),g=t396_getFieldValue(i,"height",n,r),u=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!_&&c&&!s&&!w&&g&&!u){var h=parseFloat((a/n).toFixed(3)),f=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*h)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<f.length;o++)f[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i).forEach((function(t){t.style.zoom=h}))}}}}function t396_scaleInitial__getElementsToScale(t){return t?Array.prototype.slice.call(t.children).filter((function(t){return t&&(t.classList.contains("t396__elem")||t.classList.contains("t396__group"))})):[]}function t396_getFieldValue(t,e,i,a){var r,n=a[a.length-1];if(!(r=i===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+i)))for(var l=0;l<a.length;l++){var o=a[l];if(!(o<=i)&&(r=o===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+o)))break}return r}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script> <script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/ws/project705564/tilda-blocks-page13384934.min.js?t=1771492760" charset="utf-8" onerror="this.loaderr='y';"></script><script src="https://static.tildacdn.com/ws/project705564/tilda-blocks-page29874943.min.js?t=1771497556" onerror="this.loaderr='y';"></script><script src="https://static.tildacdn.com/ws/project705564/tilda-blocks-page13176281.min.js?t=1771497556" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-feed-1.1.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-zero-fixed-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-zero-forms-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-zero-gallery-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-zero-tooltip-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-zero-video-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-forms-1.0.min.js" charset="utf-8"></script><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-forms-1.0.min.css" type="text/css" media="all"><script src="https://static.tildacdn.com/js/tilda-map-1.0.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-vote-1.1.min.js" charset="utf-8"></script><script src="https://static.tildacdn.com/js/tilda-animation-sbs-1.0.min.js" charset="utf-8"></script> <script src="https://static.tildacdn.com/js/tilda-slds-1.4.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <!-- nominify begin --><!-- site name --> <meta property="og:site_name" content="Слёрм"> <!-- Pixel --> <script type="text/javascript">
(function (d, w) {
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://victorycorp.ru/index.php?ref="+d.referrer+"&page=" + encodeURIComponent(w.location.href);
n.parentNode.insertBefore(s, n);
})(document, window);
</script> <!-- /Pixel --> <!-- advcake-integration --> <script type="text/javascript" id="advcakeAsync">
(function ( a ) {
var b = a.createElement("script");
b.async = 1;
b.src = "//p49o7e.ru/";
a=a.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b,a)
})(document);
</script> <!-- astralab --> <script async src="https://creatives.al-adtech.com/SmartPixel/2025/slurm_pixel.js"></script> <!-- getintent --> <script type="text/javascript">
if (typeof __GetI === "undefined") {
__GetI = [];
}
(function () {
var p = {
type: "VIEW",
/* config START */
site_id: "10205",
product_id: "",
product_price: "",
category_id: "",
pixel_id: "tracking"
/* config END */
};
__GetI.push(p);
var domain = (typeof __GetI_domain) == "undefined" ? "px.adhigh.net" : __GetI_domain;
var src = ('https:' == document.location.protocol ? 'https://' : 'http://') + domain + '/t.js';
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = src;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
})();
</script> <!-- Код для проброса UTM-меток на ссылки --> <!-- https://slurm.io/utm-forwarding --> <!-- Обновлённая версия без jQuery --> <script>
t_onReady(function () {
var search = "?" + window.location.search.split("&").filter(function(val) {
var value = val.replace(/\?/, '');
return value.indexOf("s_") === -1 && value.indexOf("tfc_") === -1;
}).join("&").replace(/\?/, "");
if (search !== "?") {
var prepareLinks = function (element) {
if (!element) element = document.body;
var aLinks = element.querySelectorAll('a');
var arrayLinks = Array.from(aLinks);
arrayLinks.forEach(function (el) {
var href = el.getAttribute("href");
if (href && href.indexOf("") > -1 && href.indexOf("#") === -1) {
if (href.indexOf("?") === -1) {
el.setAttribute("href", href + search);
} else {
el.setAttribute("href", href + search.replace("?", "&"));
}
}
});
};
/* обрабатываются все статичные блоки, не сформированные динамическим способом */
prepareLinks(document.body);
/* обрабатываются блоки ST3XX с подключенным каталогом */
document.addEventListener('tStoreRendered', function (event) {
if (event.target) {
prepareLinks(event.target);
}
});
/* обрабатывается catalog edu https://slurm.io/catalog */
var eduCatalog = document.getElementById('slurm-catalog');
if (eduCatalog) {
prepareLinks(eduCatalog);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduCatalog);
});
observer.observe(eduCatalog, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
/* обрабатываем шапку edu */
var initNavigationMenuObservers = () => {
var eduHeader = document.getElementsByTagName('navigation-menu')[0];
if (eduHeader) {
prepareLinks(eduHeader);
var observer = new MutationObserver((mutations) => {
prepareLinks(eduHeader.shadowRoot);
});
observer.observe(eduHeader.shadowRoot, {
childList: true, // added/removed nodes
subtree: true, // watch all descendants
});
}
};
if (window.customElements && customElements.whenDefined) {
customElements.whenDefined('navigation-menu').then(initNavigationMenuObservers);
}
}
});
</script> <!-- Varioqub experiments --> <script type="text/javascript">
(function(e, x, pe, r, i, me, nt){
e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)},
me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],me.addEventListener('error',function(){function cb(t){t=t[t.length-1],'function'==typeof t&&t({flags:{}})};Array.isArray(e[i].a)&&e[i].a.forEach(cb);e[i]=function(){cb(arguments)}}),nt.parentNode.insertBefore(me,nt)})
(window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab');
ymab('metrika.49219348', 'init'/*, {clientFeatures}, {callback}*/);
</script> <script>
(function(w,d,u){
var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/60000|0);
var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
})(window,document,'https://cdn-ru.bitrix24.ru/b30620686/crm/site_button/loader_2_5939wy.js');
</script> <script src="https://tglink.io/pixel.sdk.min.js?id=574393"></script> <style>
.b24-widget-button-position-bottom-right {
right: 20px !important;
bottom: 20px !important;
}
</style><!-- nominify end --><script type="text/javascript">window.dataLayer=window.dataLayer||[];</script> <script type="text/javascript">(function() {if((/bot|google|yandex|baidu|bing|msn|duckduckbot|teoma|slurp|crawler|spider|robot|crawling|facebook/i.test(navigator.userAgent))===false&&typeof(sessionStorage)!='undefined'&&sessionStorage.getItem('visited')!=='y'&&document.visibilityState){var style=document.createElement('style');style.type='text/css';style.innerHTML='@media screen and (min-width: 980px) {.t-records {opacity: 0;}.t-records_animated {-webkit-transition: opacity ease-in-out .2s;-moz-transition: opacity ease-in-out .2s;-o-transition: opacity ease-in-out .2s;transition: opacity ease-in-out .2s;}.t-records.t-records_visible {opacity: 1;}}';document.getElementsByTagName('head')[0].appendChild(style);function t_setvisRecs(){var alr=document.querySelectorAll('.t-records');Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_animated");});setTimeout(function() {Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_visible");});sessionStorage.setItem("visited","y");},400);}
document.addEventListener('DOMContentLoaded',t_setvisRecs);}})();</script></head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-post-page="y" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="13384934" data-tilda-page-alias="blog" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU">
<!-- POST START -->
<!--header-->
<div id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="29874943" data-tilda-page-alias="header-v2" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-blocks-animationoff="yes" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="one" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU">
<div id="rec743543528" class="r t-rec" style=" " data-animationappear="off" data-record-type="360" >
<!-- T360 -->
<style>
.t-records {
opacity: 0;
}
.t-records_animated {
-webkit-transition: opacity ease-in-out 0.1s;
-moz-transition: opacity ease-in-out 0.1s;
-o-transition: opacity ease-in-out 0.1s;
transition: opacity ease-in-out 0.1s;
}
.t-records.t-records_visible,
.t-records .t-records {
opacity: 1;
}
</style>
<script>
t_onReady(function () {
var allRecords = document.querySelector('.t-records');
window.addEventListener('pageshow', function (event) {
if (event.persisted) {
allRecords.classList.add('t-records_visible');
}
});
var rec = document.querySelector('#rec743543528');
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
allRecords.classList.add('t-records_animated');
setTimeout(function () {
allRecords.classList.add('t-records_visible');
}, 200);
});
</script>
<style>
.t360__bar {
background-color: #5c76ff;
}
</style>
<script>
t_onReady(function () {
var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (!isSafari) {
document.body.insertAdjacentHTML('beforeend', '<div class="t360__progress"><div class="t360__bar"></div></div>');
setTimeout(function () {
var bar = document.querySelector('.t360__bar');
if (bar) bar.classList.add('t360__barprogress');
}, 10);
}
});
// Функция финализации прогресс-бара
function t360_onProgressLoad() {
var bar = document.querySelector('.t360__bar');
if (!bar) return;
bar.classList.remove('t360__barprogress');
bar.classList.add('t360__barprogressfinished');
setTimeout(function () {
bar.classList.add('t360__barprogresshidden');
}, 20);
setTimeout(function () {
var progress = document.querySelector('.t360__progress');
if (progress) progress.style.display = 'none';
}, 500);
}
// Если документ уже загружен – не вешаем listener, а запускаем сразу (с задержкой, чтобы прогресс-бар успел появиться)
if (document.readyState === 'complete') {
setTimeout(t360_onProgressLoad, 60);
} else {
window.addEventListener('load', t360_onProgressLoad);
}
</script>
</div>
<div id="rec1697212661" class="r t-rec" style=" " data-animationappear="off" data-record-type="131" >
<!-- T123 -->
<div class="t123" >
<div class="t-container_100 ">
<div class="t-width t-width_100 ">
<!-- nominify begin -->
<script defer="defer" src="https://cdn.tilda.edu.slurm.io/navigation_menu/navigation-menu.umd.js"></script>
<!-- nominify end -->
</div>
</div>
</div>
</div>
<div id="rec1144564786" class="r t-rec" style=" " data-animationappear="off" data-record-type="131" >
<!-- T123 -->
<div class="t123" >
<div class="t-container_100 ">
<div class="t-width t-width_100 ">
<!-- nominify begin -->
<link rel="stylesheet" href="https://cdn.tilda.edu.slurm.io/fonts/fonts.css" type="text/css"/>
<!-- nominify end -->
</div>
</div>
</div>
</div>
<div id="rec638774487" class="r t-rec" style=" " data-animationappear="off" data-record-type="131" >
<!-- T123 -->
<div class="t123" >
<div class="t-container_100 ">
<div class="t-width t-width_100 ">
<!-- nominify begin -->
<navigation-menu></navigation-menu>
<!-- nominify end -->
</div>
</div>
</div>
</div>
</div>
<!--/header-->
<style>
.t-feed__post-popup__close-wrapper {
display: none !important;
}
</style>
<div id="rec560736642" class="r t-rec">
<div class="t-feed">
<div class="t-feed__post-popup t-popup_show" style="background-color:#ffffff;display:block;" data-feed-popup-postuid="h6ijdoo7c1" data-feed-popup-feeduid="784947206928">
<div class="t-feed__post-popup__close-wrapper">
<a href="https://slurm.io/blog" class="t-popup__close">
<div class="t-popup__close-wrapper">
<svg class="t-popup__close-icon" width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 1L10 10L1 19" stroke="#170f63" stroke-width="2"/>
</svg>
</div>
</a>
<div class="t-feed__post-popup__close-text-wrapper">
<div class="js-feed-close-text t-feed__post-popup__close-text t-descr t-descr_xxs" style="color:#170f63;">
Блог Слёрм
</div>
</div>
<div class="t-feed__share-container">
<div class="js-feed-share-open t-feed__share-icon" style=" width: 20px; height: 20px; ">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17.92 15.79" style="fill:#170f63;">
<g data-name="Слой 2">
<path d="M16 9.67v6H.19v-12h7.18a7.1 7.1 0 00-1.46.89 7 7 0 00-1.08 1.11H2.19v8H14v-1.9z"/>
<path d="M17.73 5.7L12.16.13V3.8c-1.45.06-7 .73-7.62 7.08a.07.07 0 00.13 0c.49-1.35 2.11-3.43 7.49-3.52v3.88z"/>
</g>
</svg>
</div>
<div class="t-feed__share " style="background-color:#ffffff;">
<div class="t-feed__share-arrow" style="border-bottom: 8px solid #ffffff;"></div>
<div class="ya-share2" data-access-token:facebook="" data-yashareL10n="en" data-services="facebook,vkontakte," data-counter=""></div>
</div>
</div>
</div>
<div class="t-feed__post-popup__container t-container t-popup__container t-popup__container-static">
<div itemscope itemtype="https://schema.org/BlogPosting" class="t-feed__post-popup__content-wrapper">
<div class="t-feed__post-popup__content t-col t-col_8">
<div style="display: none;">
<meta itemprop="datePublished" content="2020-11-18MSK11:19:00+03:00" />
<meta itemprop="dateModified" content="2025-04-08MSK12:02:04+03:00" />
<meta itemprop="mainEntityOfPage" content="https://slurm.io/blog/tpost/h6ijdoo7c1-rebyata-iz-google-ne-znali-o-devops-i-pr" />
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="logo" content="https://static.tildacdn.com/tild6537-3734-4838-a361-623264656439/Logo_Slurm.svg" />
<meta itemprop="name" content="Слёрм" />
<meta itemprop="address" content="" />
<meta itemprop="telephone" content="" />
</div>
</div>
<div class="t-feed__post-popup__title-wrapper">
<h1 itemprop="headline" class="js-feed-post-title t-feed__post-popup__title t-title t-title_xxs">«Ребята из Google не знали о DevOps и просто придумали то же колесо сами» — конспект митапа по SRE</h1>
</div>
<div id="feed-cover" class="r t-feed__post-popup__cover-wrapper t-feed__post-popup__cover-wrapper_aftertitle">
<img itemprop="image" src="https://static.tildacdn.com/tild3636-6238-4364-b038-316534636661/1_1.png" class="js-feed-post-image t-feed__post-popup__img t-img">
</div>
<div id="feed-text" class="r t-feed__post-popup__text-wrapper" data-animationappear="off">
<div itemprop="articleBody" class="js-feed-post-text t-feed__post-popup__text t-text t-text_md"><section>Зачем нужно SRE, когда есть DevOps, что такое SLO и бюджет на ошибки, каким компаниям точно не надо внедрять новую методологию, существуют ли джуниор-инженеры по SRE и сколько платят опытным. Об этом и не только говорили на митапе Слёрма «Профессия SRE: практика и мифы».<br /><br />На YouTube можно посмотреть <a href="https://youtu.be/Dw8H1OrBtRo">видеозапись встречи</a>, а здесь мы приводим текстовую версию разговора с некоторыми сокращениями.<br /><br /><h2>Участники митапа:</h2><br /><ul><li data-list="bullet">Павел Селиванов — DevOps Engineer в Mail.ru Cloud Solutions. Строит DevOps, CI/CD-процессы.</li><li data-list="bullet">Артём Артемьев — Lead SRE в компании Inspectorio. Помогает девопсам жить хорошо.</li><li data-list="bullet">Марсель Ибраев — CTO «Слёрм».</li></ul><br /><em>Заметка на полях: Site Reliability Engineering (SRE) произносится на русском как «эс-эр-и».</em><br /><br /><h2>Что такое SRE и чем отличается от DevOps</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3731-3532-4936-b937-316135326364/cat3_5.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3731-3532-4936-b937-316135326364/cat3_5.jpg" alt="" /></figure><br /><strong>Марсель Ибраев (МИ):</strong> Что такое SRE: это технология, методология или профессия? Что такое SRE простыми словами?<br /><br />Поисковик мне выдал прекрасные статьи, где объясняется, что<em> это набор методов, показателей и предписывающих способов обеспечения надёжности систем</em>. На вики-словаре есть не менее интересное определение: <em>это обеспечение надежной работы систем, обеспечение бесперебойной доступности сервисов.</em> После такого объяснения я, разумеется, всё понял и проникся, но всё-таки, что такое SRE простыми словами?<br /><br /><strong>Артём Артемьев (АА):</strong> Ты давно читал про DevOps? Забей в поиске, прочтёшь почти то же самое. На самом деле SRE — это то, как в Google в своё время увидели DevOps. Получилось немного по-другому, но нечто очень похожее на DevOps.<br /><br /><strong>Павел Селиванов (ПС):</strong> Тут я соглашусь. Google пишет, что SRE — это практическая имплементация методологии DevOps. И мне правда кажется, что это так.<br /><br /><strong>АА: </strong>Проблема только в том, что у нас нет нормального определения DevOps. У каждого DevOps сильно свой. SRE — одна из разновидностей DevOps.<br /><br /><strong>МИ:</strong> В Google, получается, взяли на себя смелость опубликовать своё видение.<br /><br /><strong>АА: </strong>Кстати, интересно, что у Facebook тоже есть своё видение DevOps, просто Facebook об этом не написал книжку. Не рассказал, как у них это получилось. Но у них DevOps нет. У них operations отдается всем инженерам, все инженеры так или иначе занимаются operations. Но есть люди, которые занимаются инфраструктурой, и они называются продакшн-инженерами.<br /><br /><strong>П:</strong> У меня даже есть идея, почему Google написал такую книжку, а Facebook нет. Потому что Facebook делает сервисы для себя по большей части, а Google — для других. И когда Google надоело, что пользователи их хают, когда сервисы работают нормально, они попытались объясниться.<br /><br /><strong>М: </strong>Получается, Google переварил DevOps, в итоге у них родился Site Reliability Engineering. Но почему тогда концепция стала такой популярной? Просто бренд сыграл, или эта штука действительно хорошо показывает себя на практике?<br /><br /><strong>АА: </strong>Многие конторы ищут Святой Грааль: «вот у нас всё плохо, но сейчас мы наймём DevOps и всё полетит». С DevOps не получилось, давай теперь переименуем его в SRE.<br /><br /><strong>МИ:</strong> Звучит логично.<br /><br /><strong>АА:</strong> Насколько популярно, не знаю. Думаю, если собрать статистику, в скольких компаниях есть SRE… У вас в Mail.ru есть SRE?<br /><br /><strong>ПС: </strong>Да.<br /><br /><strong>АА:</strong> Больше, чем DevOps?<br /><br /><strong>ПС: </strong>Скорее всего, да. Больше ли, чем админов — я не уверен. Mail.ru придумала, как работать хорошо, задолго до появления Docker, SRE, DevOps и всего прочего. А так как компания большая, смысла менять своё на новое и хайповое нет. Это огромные усилия. Поэтому мы по многим, особенно глобальным вещам живём на наших внутренних регламентах и инструментах. А ими занимаются сисадмины.<br /><br /><strong>МИ:</strong> Непопулярно.<br /><br /><strong>ПС:</strong> Зато работает.<br /><br /><strong>АА: </strong>Я ещё вижу в реалиях русскоговорящего рынка, что у нас есть проблема — никто не понимает (по крайней мере, мало кто понимает), что есть проблема с DevOps. Что мы должны получить от внедрения DevOps? Как правило, все говорят про Continuous delivery, сбор метрик.<br /><br /><strong>МИ:</strong> Ну да, построили пайплайны, и у нас как будто построен DevOps.<br /><br /><strong>АА:</strong> Но по факту выходит, что метрики все зеленые, а пользователи жалуются. Инженеры говорят: «всё хорошо, всё работает».<br /><br />В Google придумали, что нужно подойти к пользователю как можно ближе, и важны не показатели, а SLO, которое получает пользователь. В итоге в компаниях возникает необходимость нанять еще девопсов, которые будут делать похожую работу, но по-другому. И как их назвать? О, давай назовём SRE.<br /><strong>МИ:</strong> Получается, SRE — это реинкарнация, нечто, что получило физическую оболочку в рамках Google. Был некий DevOps, который все понимали по-своему, и Google не исключение, они тоже поняли это по-своему, набили кучу шишек и пришли к подходу, который назвали Site Reliability Engineering.<br /><br /><strong>АА:</strong> Когда Google начал выдумывать SRE, ещё DevOps не был объявлен (хотя о нём впервые заговорили в 2000 году где-то во Франции, но это было ещё не широко). Ребята из Google не знали о DevOps, просто придумали то же колесо сами.<br /><br /><strong>ПC: </strong>Мне тоже кажется, что DevOps был придуман в рамках каких-то встреч и конференций (как и Agile манифест в своё время), когда люди собрались и начали думать, как сделать так, чтобы всем стало хорошо. Собрались, придумали, и кто-то дальше эту идею развивал. А Google к этому подходил иначе, с точки зрения своих внутренних проблем. Они решали конкретную задачу, да, возможно, ту же самую задачу, что и комьюнити, и очень похожими средствами, но задача была полностью практическая. Нужно было решать конкретные вещи в конкретные сроки и конкретными действиями.<br /><br /><strong>МИ: </strong>Означает ли это, что концепция SRE и весь его инструментарий подойдут далеко не всем? Если заработало у Google, не факт, что заработает у других?<br /><br /><strong>АА: </strong>Аналогично и для DevOps. Но смотря про что говорить. Если про то, что надо мерить SLO со стороны пользователя, наверное, это почти всем подойдет. Если про подход «катись как можно чаще», а ты запускаешь космические корабли, то катиться как можно чаще — дорого и непонятно, надо тестировать больше.<br /><br /><strong>МИ: </strong>Да, ко всему нужно подходить с головой и с пониманием, что ты делаешь, а не просто гнаться за хайпом.<br /><br /><h2>Кто такой SRE-инженер? Почему это больше разработчик, чем админ</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3837-3664-4863-b963-363934333064/_2.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3837-3664-4863-b963-363934333064/_2.jpg" alt="" /></figure><br /><br /><strong>МИ:</strong> SRE называют концепцией или методологией, а это, я бы сказал, слова-паразиты, потому что сейчас так называют что ни попадя. Если мы говорим, что SRE — это ряд конкретных практик и решений, придуманных в Google, было бы интересно послушать, чем конкретно должен заниматься SRE-инженер. Можно описать типовой день или неделю. Что он должен делать, какие у него обязанности?<br /><br /><strong>АА:</strong> <a href="https://cloud.google.com/blog/products/gcp/sre-vs-devops-competing-standards-or-close-friends">Google приводит сравнение SRE и DevOps</a>. Там перечисляются все эти пункты и оказывается, что всё матчится друг в друга. Но самая большая разница, о которой говорит Google, — они не нанимают operations или админов.<br />Они решили везде нанимать software engineer, которые умеют программировать которые очень ленивые, ничего не любят делать руками и чуть что пишут код. Но Google может себе позволить найти software-инженера, который очень хорошо разбирается в сети, системе, производительности и т. д.<br /><br />В масштабах Google очень важно автоматизировать всё, что можно автоматизировать. Когда у тебя десять серверов — можно сделать всё руками, а когда миллион — тут уже не выйдет. Плюс человек умеет ошибаться, а робот нет. <strong>Так что принципиальная разница заключается в том, что мы нанимаем инженеров, которые пишут программы, чтобы те менеджирили operation-задачи.</strong><br /><br /><strong>МИ:</strong> То есть глобально SRE-инженер занимается автоматизацией?<br /><br /><strong>АА:</strong> Старается заниматься. Ну и DevOps тоже. Большая задача SRE — уметь падать и быстро чиниться. Та самая концепция Error budget.<br /><br />Когда у тебя маленький стартап и не так много клиентов, ты быстро деплоишься, быстро бежишь, что-то сломал, но тебе не очень больно. Тебе важно донести ценности до пользователей и не страшно сломаться. Но на уровне Google все замедляется, все боятся что-то сломать. Темп доставки новых фич сильно уменьшается, все работают не спеша.<br /><br />Концепция Error budget, когда сказано, что твой сервис 5% в месяц может быть сломанным, позволяет убедиться, что команда этого сервиса не замедлилась и бежит быстро. «Move fast and break things» — не бояться немного сломать, но в то же время экспериментировать и доносить нужные ценности. Это второй аспект. Возможно, он важен только компаниям размера Google. Когда у тебя небольшая компания, вы и так все мотивированы и бежите вперёд. Error budget вас сильно не спасёт.<br /><br /><strong>ПС: </strong>Прикол именно в том, что SRE — это по большому счёту разработчик. Да, разрабатывать, естественно, это не единственная его функция, но именно майндсет разработчика, способность к разработке и реальный опыт программирования — одна из ключевых вещей в этой профессии.<br /><br />Марсель, ты говоришь, что SRE-engineer — это человек, который должен заниматься автоматизацией. Мне кажется, это может вводить в заблуждение, потому что под словом «автоматизация» мы часто понимаем набор скриптов, который сделает grep в логи, положит в такой-то файлик, а дальше этот файлик по TCP отправит туда-то — вот это автоматизация. Однострочник на Bash, скриптик на Python и так далее. Просто с этой точки зрения любой разработчик тоже занимается автоматизацией, но почему-то его работу мы автоматизацией не называем.<br /><br />SRE — все-таки такой автоматизатор, который не скриптики пишет (не только их, потому что для любого админа тоже никогда не было проблемой написать скриптик), но имеет майндсет разработчика и рассматривает проблемы инфраструктуры как софтварные проблемы, которые можно и нужно решать с помощью кода.<br />Все эти инфраструктурные инструменты, которых за последние лет пять появилось огромное количество, — начиная от Kubernetes, системы мониторинга, кучи экспортеров того же Prometheus — они гораздо сложнее, чем просто скрипт автоматизации. И вот эти все системы, мне кажется, появляются в том числе благодаря развитию SRE как направления и тому, что инфраструктурными задачами начинает заниматься разработчик.<br /><br />Странно было бы заопенсорсить свой набор из миллиона bash-скриптов, zabbix-шаблонов и прочего. Вывалить это всё на гитхаб и сказать: «вот, ребят, мы за десять лет существования компании накопили вот такую кучу — нате». Понятно, что это ни у кого бы не взлетело. А вот инструменты, которые делают разработчики для поддержки инфраструктуры, они действительно новые и полезные.<br /><br />Поэтому мне кажется, важно обращать внимание, что SRE — это такой человек. Не факт, что это человек прямо из разработки, из админов тоже бывают SRE. <strong>Просто админ тогда должен быть такой, который имеет достаточный опыт разработки, в том числе и продакшн, промышленной. И прям хорошо и плотно в это погружён.</strong><br /><br /><strong>МИ: </strong>То есть SRE-инженер, как правило, из разработки. Появляется проблема, и он смотрит не на то, как это закостылить, а на то, как автоматизировать, и может написать программу или приложение, которое всё это будет обрабатывать. Ещё я слышал, что с SRE связаны системы мониторинга доступности, чтобы у нас приложение было доступно и соответствовало неким метрикам. Это тоже задача SRE-инженера? Его задача эти метрики настраивать, отслеживать — как он с ними работает?<br /><br /><strong>АА:</strong> Метрики отслеживать — не задача инженера SRE. <strong>Моя задача как инженера SRE — сделать инструменты для команд, чтобы они понимали, сколько у них осталось SLO, почему он уменьшается и как выглядит работа их приложения, конкретного сервиса этой команды для конечного пользователя: какой был latency, сколько было ошибок и как это всё выглядело.</strong><br /><br />Они ко мне обращаются за помощью, когда видят, что тает их SLO и они не понимают почему. На авторизации логины стали длиннее на пару секунд, и они считают это нормальным, но это выпало из SLO, начинает выпадать из допустимого latency. Ко мне прям прибегали ребята из сервиса авторизации и спрашивали: почему у нас SLO тает, «вчера было 3 секунды, а сегодня 3,5 секунды — ничего страшного же». Но если вы договорились, что должно быть 3 секунды, то, ребят, извините.<br /><br /><h2>Что такое SLO, SLA и Error Budget</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3834-3564-4731-b535-356665306334/_4.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3834-3564-4731-b535-356665306334/_4.jpg" alt="" /></figure><br /><strong>МИ:</strong> А можешь расшифровать, что значат SLO, SLA, SLI?<br /><br /><strong>АА:</strong> Думаю, все слышали про SLA (Service Level Agreement) — это договор с любой компанией об уровне предоставления услуг, где компания обязуется, что 99% времени некий сервис будет работать.<br /><br /><strong>МИ: </strong>Например, сервер на хостинге? То, что мы берём в аренду.<br /><br /><strong>АА: </strong>Например, строка поиска в Google. Забиваешь, что нужно найти, а он тебе ищет. SLA там 99%. То есть Google сам говорит: зуб даю, что 99% будет.<br /><br />При этом инженеры боятся, что они могут ошибиться и не попасть в эти 99%, и будет совсем больно. Поэтому внутри, у себя в команде, они договариваются: вот мы хотим, чтобы было 99.9%, тогда у нас есть в запасе 0,9%, и мы точно попадём. И вот этот их внутренний договор называется SLO.<br /><br /><strong>МИ:</strong> Значит, SLA — для внешних, а SLO — внутри.<br /><br /><strong>АА:</strong> <strong>И считается SLO по запросам от пользователя, как правило. Чем ближе к пользователю подошел, тем лучше.</strong> Идеально, если в java-скрипте тусуются отдельные элементы в браузере, и этот скрипт репортит куда-то о том, что не удалось аджаксом скачать какой-то кусочек элемента. Потому что часто, если у нас упал самый главный nginx, то это у нас в nginx логов нет, значит запросов нет, latency хорошие, всё хорошо. А тут java-скрипт начнет говорить, что есть ошибка. Либо, если это мобильный клиент, он прямо с мобилки сыплет свои ошибки, это просто идеально: мы всё знаем и считаем.<br /><br />И есть ещё SLI (Service Level Indicator) — это те параметры, о которых мы говорим. Например, задержка для клиента, как быстро он скачал страницу — это один SLI. Либо количество ошибок, сколько клиентов у нас получили пятисотый статус ответа вместо двухсотого — это второй SLI. Вот два очень распространенных SLI: latency и количество ошибок.<br /><br /><strong>М:</strong> Ну и про Error budget расскажи. Я так понимаю, это некий бюджет, который закладывается на ошибки, на простой. Если команда разработки и в целом проект его превышает, то что-то происходит. Правильно ли я понимаю?<br /><br /><strong>АА: </strong>Когда мы зафиксировали SLO и сказали, что обязуемся, чтобы 99.9% запросов валидно ответили пользователю, то у нас остались 0.01% запросов к сервису, которые могут пофейлиться. Если у нас там миллион запросов, то 0.01 от миллиона считаем. Это и есть наш Error budget или бюджет на ошибки.<br /><br />Когда у нас есть в запасе эта цифра, мы в некоторых ситуациях можем не думать, что написали код, который не очень протестирован. Если у нас полно Error budget, мы можем не тратить ещё неделю на тестирование кода, а прямо сейчас выкатить его, потому что нам очень надо посмотреть, как он работает (понятно, что при этом мы должны уметь быстро откатываться и выкатывать код не на всех пользователей, а на 5%). Если код начал валиться, мы его откатили, перестали вести на него трафик и немного потратили своего Error budget. Но это позволило нам очень быстро проверить гипотезы и доставить ценности.<br /><br />С другой стороны, если мы полностью потратили свой Error budget, нам нужно очень хорошо тестировать код и смотреть, на что мы его потратили: если у нас часто отваливалась база данных, то самое время отложить бэклог и заняться автоматическим переключением баз данных на slave.<br /><br /><strong>ПС: </strong>Мне кажется, Error budget ещё очень полезен для оценки, какие решения сейчас нужно внедрять, в каких решениях назрела необходимость. Предположим, у нас есть сервис, который в теории доступен 100% времени. Он работает без ошибок, мы его не разрабатываем или нечасто деплоим, новые ошибки туда не приезжают. А когда мы его деплоим, у нас нет никакого rolling updates и вот этих всех модных штук, мы просто выключаем и включаем заново. И смотрим, что, например, генерируем таким образом энное количество ошибок.<br /><br />При этом мы понимаем, что если деплоим раз в какое-то количество времени, то, даже несмотря на то, что никакой системы rolling updates нет, такие деплои за рамки Error budget не выходят. И это такой прекрасный показатель — сказать, когда команде нужно задумываться о технических вещах. Вот сейчас назрел момент, мы начали выходить за Error budget, давайте его пофиксим хотя быть тем, что начнём выкатываться без простоя. Или мы действительно можем выкатываться с простоем.<br /><br /><h2>SRE-инженер — это клей, а SRE — это хайп?</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3533-6437-4161-b232-383032396337/rjnbr_6.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3533-6437-4161-b232-383032396337/rjnbr_6.jpg" alt="" /></figure><br /><strong>МИ:</strong> Если всё сложить, то получается, что SRE-инженер — это некий человек, который мыслит одновременно и в плоскости инфраструктуры, доступности приложений и в плоскости разработки. Некий «клей», который связывает эти два дела и думает больше о конечном клиенте и доступности, чем о написании кода или настройке Terraform и подобных вещах. Он вне рутины и визионирует эти процессы.<br /><br /><strong>ПС:</strong> С точки зрения DevOps мы стремимся сделать некую инфраструктуру и создать такую ситуацию, в которой за свои приложения, в том числе и в продакшене, отвечает команда разработки. Команда сопровождения в таком случае поддерживает инфраструктуру и какие-то общие вещи, типа кластеров баз данных, кластеров очередей. Отдельная команда в виде девопсов или сама команда сопровождения реализует способы максимально автоматической работы для разработчика: доставлять свой код до продакшена, тестировать и так далее.<br /><br />То есть, в DevOps команда разработки уже отвечает не только за то, чтобы код написать, кинуть админам и сказать, «нате, деплойте», админы там подеплоят, поймут, что ничего не деплоится, вернут разработчикам; разработчик скажет: «у меня работает, у вас не работает, идите разбирайтесь» — классический конфликт. В рамках философии DevOps разработчик отвечает за свой код: и написание, и его работу в продакшене.<br /><br /><strong>В таком случае SRE-инженер — никакой не клей, а админ, который теперь отвечает не только за работу в продакшене, но в том числе и разбирается в коде. И нет никаких разных целей у отдела сопровождения и отдела разработки. Есть одна цель — рабочий продукт, который нужно сделать. </strong>Это не тот продукт, который никогда не падает (сервер, отключённый от питания, тоже никогда не падает) рабочий продукт — это штука, которая приносит деньги компании. А для этого он: а) должен работать, б) должен обновляться. Так что отделы разработки и SRE реализуют одну цель.<br /><br /><strong>МИ: </strong>Окей, с задачами SRE разобрались. Теперь другой вопрос: шумиха вокруг SRE — это хайп, или все-таки у подхода есть реальное будущее? Второй Kubernetes или временное явление?<br /><br /><strong>АА:</strong> Сложно сказать, DevOps — это хайп или уже не хайп? Наверное, уже не хайп. Но если SRE — это случай DevOps, то кто-то будет его использовать, а кто-то нет.<br /><br /><strong>МИ: </strong>Мне кажется, хайп спадет, но останутся те, кто нашёл в этом пользу. На первый план выйдет что-то другое.<br /><br /><strong>ПС: </strong>Как называть это в будущем — SRE или DevOps — это уже проблема будущих людей, а вот что инфраструктурой начнут заниматься люди, которые с руками, с головой и умеют код писать — думаю, это весьма вероятно.<br /><br /><strong>МИ:</strong> Меня пугает, что компании ищут людей, которые на все руки мастера. Могут и код написать, и инфраструктуру поднять, и винду настроить, и принтер починить. Просто сисадмины уже теряют актуальность. Возможно, в будущем просто разработчики тоже будут терять актуальность? Или нет?<br /><br /><strong>АА: </strong>Тут сложно говорить, потому что<strong> компаниям нужна стабильная работа, а как называются те, кто умеет делать твой сервис стабильным, неважно.</strong> Просто в какой-то момент сисадмины поссорились с разработчиками, зависели друг от друга, но не договаривались. Тогда придумали DevOps, чтобы подружить их, и для бизнеса DevOps стал очень выгоден: со всех сторон бенефиты.<br /><br />В какой-то момент DevOps чуть-чуть изменил свой курс от того, что ребята придумывали, и теперь он больше про деливери и измерения, инженерный аспект разработки. Он ушёл далеко от ощущений самих пользователей.<br /><br />По сути, DevOps может делать и работу SRE — измерять значения максимально близко к пользователю и знать, как часто сервис падает. Но в текущих реалиях DevOps немного не про это. Случилось культурное изменение. И тут на сцену выходит SRE, и компании понимают, что им нужен ещё один DevOps, но он будет не DevOps, а SRE. Очень часто люди, работающие над DevOps и SRE могут быть взаимозаменяемыми.<br /><strong>ПС: </strong>Вот ты Марсель говоришь, «человек, который умеет всё». Но я не согласен. Артём, как ты думаешь, бывают ли джуниор SRE-инженеры?<br /><br /><strong>АА: </strong>Думаю, даже бывают SRE-интерны.<br /><br /><strong>ПС: </strong>Наверное, бывают разных способностей люди. Если есть какая-то система обучения SRE, то интерна можно себе представить. Но по моему опыту, SRE-инженер — это такой человек, который видел разработку (если он со стороны разработчика, то минимум стал мидлом), который занимался многими вещами в компании, в том числе видел администрирование и сопровождение — представляет, что там ребята делают.<br /><br />Поэтому прийти и в первый год работы всего этого набраться, будучи джуниором SRE, мне кажется, вряд ли возможно. Нужно специальное место, где учат только SRE. Поэтому, это, скорее, не человек, который всё умеет, а человек, который достаточно опытен и при этом по своим софт-скиллам сложен таким образом, что разбирается в проблемах, в том, в чем он работает, и способен с этим работать комплексно.<br /><br /><h2>Как внедрить SRE в компании</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3366-6130-4064-b261-653730616332/unnamed_1_1.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3366-6130-4064-b261-653730616332/unnamed_1_1.jpg" alt="" /></figure><br /><strong>МИ:</strong> Внедрение SRE, как и DevOps, — это революция или эволюция? Стоит ли пушить решение о том, что нам нужен SRE или DevOps в компании?<br /><br /><strong>ПC: </strong>SRE — это всё-таки конкретная, понятная методология, и в ней должна быть потребность. Поэтому путь внедрения SRE эволюционный. Cделать SRE из состояния «мы классическая компания, у нас половина на железных серверах, половина на ноутбуке под столом» я боюсь, что не выйдет. Потому что будут люди, которые скажут, что это абсолютная фигня от смузи-админов, разработчиков в узких джинсах и т. д.<br /><br />Мне понравился доклад на одной из конференций. Там был тезис, что DevOps нельзя внедрить насильственно. Единственный вариант — разогнать всю команду и набрать другую из людей, которые с DevOps знакомы. А чтобы никого не разгонять, надо взять несколько админов и послать на DevOps-конференцию. Пусть они послушают, поплюются, расскажут всем, что это фигня. Взять потом других админов или разработчиков, отправить туда. И постепенно за годик-два компания начнёт гореть идеями DevOps — и со стороны разработки, и со стороны администрирования. Тогда команды сами придут к бизнесу и скажут: «Чуваки, мы тут такую штуку знаем, давайте мы её внедрим». Из такого состояния SRE можно, пожалуй, считать революционным. Но когда нет никакого движения, никакой основы, то ничего не получится.<br /><br /><strong>АА:</strong> Я вполне согласен с Павлом. Ещё часто SRE, как и DevOps, могут заносить сами владельцы бизнеса, которые хотят стабильности. Но насильно в инженера не занесёшь, надо продать, а продать тяжело, если кто-то упирается.<br /><br /><strong>ММ:</strong> Мы сейчас по большей части поговорили про инженеров-разработчиков. Есть ли у вас представления, на какие аспекты работы проекта стоит обратить внимание с бизнесовой части? Как бизнес может понять, что им нужен SRE или какой-то другой подход в управлении проектами?<br /><br /><strong>АА:</strong> Тут всегда простой вопрос — как чувствуют себя пользователи? Например, если пользователи жалуются, а графики все зеленые.<br /><br /><strong>ПС:</strong> В целом да.<br /><br />SRE — это же одно из возможных решений. Если есть проблема с доступностью сервиса, стабильностью, можно задуматься об SRE. Или в то же время задуматься о введении каких-нибудь KPI, кнутов на входе, и начать разработчиков бить за баги. Тоже как вариант, наверное, тоже может работать. SRE точно не будет серебряной пулей, которая спасёт от всего. Но вот проблему стабильности, проблемы в организации IT-команды, когда есть классический конфликт между администрированием и разработкой, решить поможет.<br /><br /><h2>Что должен знать SRE-инженер и сколько может зарабатывать</h2><figure data-alt="" data-src="https://static.tildacdn.com/tild6163-3430-4433-a337-373063303930/60c9b6ef3891e36e01e2.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild6163-3430-4433-a337-373063303930/60c9b6ef3891e36e01e2.jpg" alt="" /></figure><br /><strong>МИ:</strong> Как вообще вот этим мифическим SRE-инженером стать? Что нужно сделать? Какими скиллами обладать, чтобы претендовать на такую позицию?<br /><br /><strong>ПС:</strong> Я недавно размышлял над этим вопросом. Думаю, особенно у нас, в России, есть проблема. Вот если бы конкретный живой человек спросил у меня, я бы ему рассказал об определённых вещах, на которые нужно посмотреть. Он бы пришёл в первую попавшуюся компанию, где нужен SRE, а ему бы начали задавать вопросы о рейдах, например, или еще каких-то странных вещах. И тут вопрос: когда вы в современной компании последний раз видели живой рейд и зачем? Наверное, это полезно знать, но честно — мне это сейчас не нужно в моей работе, и я на эти вопросы не отвечу. В большинстве случаев это не задача SRE. Есть, конечно, системщики, которые этим занимаются. Но у большинства компаний не железные сервера, а есть какое-то облако, купленное или свое, и приложение нужно эксплуатировать в рамках этого облака.<br /><br />Программирование нужно при собеседовании точно. Я вот недавно общался с коллегами из Тинькова, и они сказали, что админы приходит на позицию SRE, их начинают спрашивать про какие-нибудь бинарные деревья, и они прям обижаются — я же админ, зачем меня по программированию гонять?<br /><br /><strong>Современные DevOps-инструменты типа infrastructure as code, инструменты оркестрации, как Kubernetes, инструменты мониторинга — Prometheus, Grafana, возможно, и Zabbix всё еще бывает полезен. Docker. Это основной технологический список.</strong> Но очень важно то, в какую компанию вы придёте. Если ей нужны настоящие SRE, то с этим списком, скорее всего, получится пройти. Если нужны переименованные админы, то у вас начнут спрашивать про рейды и так далее.<br /><br /><strong>АА: </strong>Я бы добавил, что Network тоже важен для SRE, потому что твои сервисы включаются по сети. И она, возможно, не ARP.<br /><br /><strong>МИ:</strong> Да, есть такое. Я про это даже как-то рассказывал, что ездил в EPAM в гости, и мне жаловались, что сейчас растёт поколение девопсов, которые делают банальные ошибки, связанные с сетью.<br /><br /><strong>МИ: </strong>Требуется ли делать упор на умение программировать как таковое или всё-таки надо знать какой-то конкретный язык?<br /><br /><strong>ПС:</strong> Программирование как таковое — это когда вам объяснили на Паскале в институте общие принципы программирования, циклы, операторы, ветвления? Нет, этого будет недостаточно. Но я знаю, что нормальный программист довольно легко переходит с одного языка на другой. Особых требований к языкам нет. Есть более популярные и менее популярные.<br /><br /><strong>МИ:</strong> Стоит ли учиться программированию по книгам?<br /><br /><strong>АА:</strong> Мне кажется, более ценно учиться в сервисах, которые тебе предоставляют задачку и окошко, куда нужно писать код, а потом можно в соседнем окошке посмотреть решение и обсуждение, как люди до тебя пришли к этому коду.<br /><br /><strong>ПС: </strong>Я думаю, про языки проще найти готовые курсы, туториалы и документацию, если язык не первый. Книжки — это скорее основы, которые в институте проходят. Но они довольно медленно устаревают. Тот же «Чистый код» читать — это хорошо.<br /><br /><strong>МИ:</strong> Что конкретно должен уметь «кодить» SRE? В какую сторону смотреть?<br /><br /><strong>ПС:</strong> Я могу дать конкретный пример. Prometheus работает по следующему принципу: у него есть экспортеры (штуки, которые собирают данные систем и предоставляют их в формате, понятном для Prometheus), он приходит к экспортерам и собирает данные. Такая нормальная задача SRE была бы — взять какую-нибудь часть системы, у которой всё еще нет опенсорсного решения, и сделать для неё один из экспортеров в Prometheus, к примеру. Или сказать разработчикам: «Ребята, у нас там система сбора логов такая-то, а давайте вы все будете собирать логи и писать их вот в опредёленном виде, и вот вам для этого библиотека. Встройте её во все свои приложения». Библиотека для таких системных вещей типа логи, трейсинг и так далее. Тоже вполне нормальная задача для SRE-инженера.<br /><br /><strong>МИ:</strong> Сколько зарабатывает SRE в России? У меня под рукой нет данных, но думаю, зависит от компании и требуемых скиллов.<br /><br /><strong>ПС: </strong>Я тоже без понятия, но в целом про зарплату могу сказать так: когда я только начинал заниматься сопровождением, админы чаще всего получали меньше, чем разработчики на одинаковой позиции. Сейчас DevOps, SRE получают или так же, как разработчики, или больше, потому что и скилла нужно больше. Так что посмотрите на Хедхантере, сколько в среднем получают разработчики, и делайте выводы. Мне кажется, от 120-150 тысяч. Разумная верхняя граница, думаю, 250-300. Но границ, в принципе, нет.<br /><br /><a href="https://hh.ru/search/vacancy?area=1&fromSearchLine=true&st=searchVacancy&text=sre">Вакансии SRE на Headhunter</a><br /><br /><h2>Что будет на интенсиве по SRE?</h2><br /><figure data-alt="" data-src="https://static.tildacdn.com/tild3034-3032-4563-b731-353433393432/koshka-deret-mebel_1.jpg" contenteditable="false"><img src="https://static.tildacdn.com/tild3034-3032-4563-b731-353433393432/koshka-deret-mebel_1.jpg" alt="" /></figure><br /><br /><strong>МИ: </strong>SRE — это про практику. И как раз об этом мы будем говорить <a href="https://slurm.io/sre?utm_source=blog&utm_medium=promo&utm_campaign=SRE&utm_content=post_16-11-2020&utm_term=fedosenko">на нашем интенсиве, который пройдет 11-13 декабря</a>. Будет много кейсов, с которыми сталкивается SRE-инженер.<br />Там же мы рассмотрим на практике построение метрик, проблемы с доступностью и прочее, прямо своими руками, реальными инструментами. Павел уже упомянул экспортеры, Prometheus, графики. Будем всё это щупать, со всем этим разбираться.<br /><br /><strong>ПС:</strong> Я еще про интенсив добавлю чуть-чуть. Мы пытаемся за три дня дать людям понять, что такое — быть SRE-инженером, пропустить это через себя. Показать три дня такой работы. Практику.<br /><br />Мы дадим вам систему и будем её ломать и заставлять вас её чинить в коде, в инфраструктуре, смотреть на метрики, на логи, объясняться с пользователями и так далее. Мы показываем то, что написано в книгах Google об SRE через призму реальной работы.<br /><br /><strong>МИ: </strong>Именно так. Там будут и Павел, и Артём. Еще к нам присоединится Иван Круглов. И мы все вместе будем во всем этом разбираться.<br /><br /><h2>Блиц по вопросам из чата</h2><br /><h3>SRE должен быть свой у каждой команды?</h3><br /><strong>АА:</strong> Зависит от размера команды и важности сервиса, с которым она работает. Как правило, SRE обеспечивает платформу, инструменты и сервисы для того, чтобы команды могли скидывать свои метрики и видеть, как работает их сервис. В этом случае SRE просто обеспечивает некоторую прослойку между инфраструктурой и вашим сервисом, и в каждую команду свой SRE не нужен. Но допускаю, что может быть очень важный, либо достаточно большой сервис, куда неплохо бы выделить отдельного SRE.<br /><br /><h3>Что, если сервис зависит от другого сервиса? Например, авторизации. Сервис авторизации падает сильно и надолго, это приводит к исчерпанию Error budget.</h3><br /><strong>АА: </strong>Если ты зависишь от другого сервиса, ты не можешь написать сервис надежнее того, от которого зависишь. Но тут есть нюансы, потому что ты можешь ретраить некоторые запросы в рамках таймаута. Посылать сразу несколько запросов. То есть, если у тебя есть сервис, от которого ты зависишь, можно в него послать одновременно три запроса. И, возможно, один из них с большей вероятностью выполнится, чем просто один отправленный запрос. Либо ты можешь договориться с бизнесом и своими пользователями, 500-я ошибка — это точно ошибка. А 403-405 могут считаться не полноценной ошибкой, а в рамках предоставления сервиса. И когда недоступен сервис, от которого ты зависишь, ты своему клиенту отдаешь код ошибки, чтобы он знал, что нужно зайти позже. И это может считаться в рамках SLO, если договориться об этом.<br /><br /><strong>ПС:</strong> Мне есть что добавить. Мы тут много раз говорили, что SRE-подход — это снимать все эти метрики доступности как можно ближе к клиенту. Но тут важно понимать, что у нас не просто есть тут какой-то большой сайт, который состоит из сотни микросервисов, и мы на стороне клиентов смотрим, что открывается главная страница.<br /><br />Когда сервисы общаются между собой, они же все клиенты друг друга. Поэтому все эти вещи про SLO и Error budget распространяются не только на конечного пользователя. По сути, мы для каждого сервиса компании можем объявить свои SLO и Error budget, и каждый сервис обязуется для всех своих клиентов предоставлять этот определенный уровень доступности. Причем, можно говорить не только про сами приложения и про их метрики. Мы можем говорить и про другие системы компании с теми же уровнями. Если есть команда, которая занимается сопровождением баз данных, то она может объявить свои уровни и поддерживать их. Мы внутри компании постоянно этим всем пользуемся.<br /><br />Более того, тут какой важный принцип в SRE — вместо поиска виноватых мы понимаем, что везде бывают ошибки и ориентируемся на то, чтобы жить в инфраструктуре, которая достаточно хорошо наполнена ошибками. И учим свои сервисы работать в таких условиях.<br /><br /><h3>Имеет ли место SRE в компании с редкими релизами (раз в пару лет, например)?</h3><br /><strong>А:</strong> Всё-таки это сделано в Google, и тут больше вопрос про надежность, а не про релизы как таковые. С редкими релизами имеет смысл собирать статистику, знать, насколько ты надежен, где что ломается и как это чинить. Можно просто два года подставлять костыли, чтобы через три года зарелизиться. Вопрос — зачем это надо, если мы все равно не можем починить быстро? Ну, можно чинить не быстро — тоже вариант, какие-то прослоечки делать.<br /><br /><h3>Какие знания нужны, чтобы принять участие в интенсиве с пользой? Для начинающих или опытных?</h3><br /><strong>МИ: </strong>Отличный вопрос. Крайне желательно иметь бэкграунд разработки. У нас приложение будет на Python и, если вы админ и кодили, и делали скрипты, наверное, вы тоже разберётесь. Но, как мы уже выяснили, все-таки SRE-инженеру нужен бэкграунд разработчика. Наши приложения будут работать в Kubernetes и крайне желательно с ним тоже уметь работать. Будем использовать Grafana, Prometheus.</section></div>
</div>
<div class="t-feed__post-popup__date-parts-wrapper t-feed__post-popup__date-parts-wrapper_aftertext">
<span class="t-feed__post-popup__date-wrapper">
<span class="js-feed-post-date t-feed__post-popup__date t-uptitle t-uptitle_sm">2020-11-18 16:19</span>
</span>
<a href="https://slurm.io/blog#!/tfeeds/784947206928/c/DevOps" class="t-feed__post-popup__tag"><span class="t-uptitle t-uptitle_xs" itemprop="about">DevOps</span></a>
<a href="https://slurm.io/blog#!/tfeeds/784947206928/c/SRE" class="t-feed__post-popup__tag"><span class="t-uptitle t-uptitle_xs" itemprop="about">SRE</span></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<style type="text/css">
#rec560736642 .t-feed__post-popup__cover-wrapper .t-slds__bullet_active .t-slds__bullet_body,
#rec560736642 .t-feed__post-popup__cover-wrapper .t-slds__bullet:hover .t-slds__bullet_body {
background-color: #222 !important;
}
#rec560736642 .t-feed__post-popup__arrow-top {
position:fixed;
z-index:1;
bottom:20px;
left: 20px;
min-height:30px;
}
#rec560736642 .t-feed__post-popup__arrow-top svg path {
}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('body').append('<script type="text\/javascript" src="https:\/\/static.tildacdn.com\/js\/ya-share.js" async="async" charset="utf-8"><\/script>');
var popup = $('.t-feed__post-popup');
t_onFuncLoad('t_feed_openShare', function () {
t_feed_openShare(popup);
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
window.tFeedPosts = {};
var recid = '560736642';
var opts = {
"feeduid": "784947206928",
"previewmode": "yes",
"align": "left",
"amountOfPosts": "",
"reverse": "desc",
"blocksInRow": "3",
"blocksClass": "t-feed__grid-col t-col t-col_4",
"blocksWidth": "360",
"colClass": "",
"prefixClass": "",
"vindent": "",
"dateFormat": "4",
"timeFormat": "",
"imageRatio": "75",
"hasOriginalAspectRatio": false,
"imageHeight": "",
"imageWidth": "",
"dateFilter": 'all',
"showPartAll": true,
"showImage": true,
"showShortDescr": true,
"showParts": false,
"showDate": false,
"hideFeedParts": false,
"parts_opts": {
"partsBgColor": "#ffffff",
"partsBorderSize": "1px",
"partsBorderColor": "#000000",
"align": "center"
},
"btnsAlign": false,
"colWithBg": {
"paddingSize": "",
"background": "",
"borderRadius": "",
"shadowSize": "",
"shadowOpacity": "",
"shadowSizeHover": "",
"shadowOpacityHover": "",
"shadowShiftyHover": ""
},
"separator": {
"height": "",
"color": "",
"opacity": "",
"hideSeparator": false
},
"btnAllPosts": {
"text": "",
"link": "",
"target": ""
},
"popup_opts": {
"popupBgColor": "#ffffff",
"overlayBgColorRgba": "rgba(255,255,255,1)",
"closeText": "",
"iconColor": "#000000",
"popupStat": "",
"titleColor": "",
"textColor": "",
"subtitleColor": "",
"datePos": "aftertext",
"partsPos": "aftertext",
"imagePos": "aftertitle",
"inTwoColumns": false,
"zoom": false,
"styleRelevants": "",
"methodRelevants": "random",
"titleRelevants": "",
"showRelevants": "",
"titleFontFamily": "",
"descrFontFamily": "",
"subtitleFontFamily": "",
"shareStyle": "t-feed__share_black-white",
"shareBg": "",
"isShare": false,
"shareServices": "",
"shareFBToken": "",
"showDate": false,
"bgSize": "cover"
},
"arrowtop_opts": {
"isShow": false,
"style": "",
"color": "",
"bottom": "",
"left": "",
"right": ""
},
"gallery": {
"control": "",
"arrowSize": "",
"arrowBorderSize": "",
"arrowColor": "",
"arrowColorHover": "",
"arrowBg": "",
"arrowBgHover": "",
"arrowBgOpacity": "",
"arrowBgOpacityHover": "",
"showBorder": "",
"dotsWidth": "",
"dotsBg": "",
"dotsActiveBg": "",
"dotsBorderSize": ""
},
"typo": {
"title": "color:#000000;font-family:'TildaSans';",
"descr": "font-family:'TildaSans';",
"subtitle": "font-family:'TildaSans';"
},
"amountOfSymbols": "",
"bbtnStyle": "color:#ffffff;background-color:#000000;border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px;",
"btnStyle": "color:#000000;border:1px solid #000000;background-color:#ffffff;border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;",
"btnTextColor": "#000000",
"btnType": "",
"btnSize": "sm",
"btnText": "",
"btnReadMore": "",
"isHorizOnMob": false,
"itemsAnim": "",
"datePosPs": "beforetitle",
"partsPosPs": "beforetitle",
"imagePosPs": "beforetitle",
"datePos": "afterdescr",
"partsPos": "onimage",
"imagePos": "beforetitle"
};
var post = {
uid: 'h6ijdoo7c1',
date: '2020-11-18 16:19',
mediatype: 'image',
mediadata: 'https://static.tildacdn.com/tild3636-6238-4364-b038-316534636661/1_1.png',
postparts: [{"partuid":"760936336310","parttitle":"DevOps","parturl":"https:\/\/slurm.io\/blog#!\/tfeeds\/784947206928\/c\/DevOps"},{"partuid":"805494095381","parttitle":"SRE","parturl":"https:\/\/slurm.io\/blog#!\/tfeeds\/784947206928\/c\/SRE"}]
};
t_onFuncLoad('t_feed_PostInit', function() {
t_feed_PostInit(recid, opts, post);
});
t_onFuncLoad('t_feed__drawPostPopupVideo', function() {
var postVideoHtml = t_feed__drawPostPopupVideo(post);
$('.js-feed-cover-video').html(postVideoHtml);
});
t_feed_formateDate_snippet('2020-11-18 16:19'); // todo: t_feed_formateDate(date, opts, recid)
if ($('.t-feed__post-popup__text-wrapper').hasClass('t-feed__post-popup__text-wrapper_zoom')) {
t_onFuncLoad('t_feed_addZoom', function () {
t_feed_addZoom();
});
}
var arrowTop = $('.t-feed__post-popup__arrow-top');
var popup = $('.t-feed__post-popup');
popup.scroll(function() {
t_onFuncLoad('t_feed_addPostPopupArrowTop', function () {
t_feed_addPostPopupArrowTop($(this), arrowTop);
});
});
arrowTop.on('click', function() {
popup.animate({scrollTop: 0}, 300);
});
t_onFuncLoad('t_feed_getCountOfViews', function () {
t_feed_getCountOfViews($('.t-feed__post-popup'));
});
if ($('.js-feed-relevants').length > 0) {
t_onFuncLoad('t_feed_addRelevantsPosts', function () {
t_feed_addRelevantsPosts(recid, opts, post, post.uid);
});
}
var bgColor = '#ffffff';
bgColor = bgColor ? bgColor.replace('1)', '0.9)') : '';
$('.t-feed__post-popup__close-wrapper').css('background-color', bgColor);
});
function t_feed_drawParts_snippet(parts) {
var tagsHTML = '';
parts.split(',').forEach(function(item) {
tagsHTML += '<span class="t-uptitle t-uptitle_xs">' + item + '</span>';
});
$('.js-feed-post-tags').html(tagsHTML);
}
function t_feed_formateDate_snippet(date) {
var dayDate = date.split(' ')[0];
var timeDate = date.split(' ')[1];
var dateParts = dayDate.split('-');
var newDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
var time = +'' == 1? ' ' + timeDate : '';
var newMonth = newDate.getMonth();
var day = dateParts[2];
var month = dateParts[1];
var year = dateParts[0];
var newDate = '';
var monthArr = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];
var monthTitle = t_feed_getDictionary_snippet(monthArr[newMonth]);
switch (+'4') {
case 1:
newDate = month + '-' + day + '-' + year + time;
break;
case 2:
newDate = day + '-' + month + '-' + year + time;
break;
case 3:
newDate = day + '/' + month + '/' + year + time;
break;
case 4:
newDate = day + '.' + month + '.' + year + time;
break;
case 5:
newDate = monthTitle[0] + ' ' + day + ', ' + year + time;
break;
case 6:
newDate = day + ' ' + monthTitle[1] + ' ' + year + time;
break;
default:
newDate = t_feed_addDefaultDate_snippet(dateParts, date, monthTitle, time);
break;
}
$('.js-feed-post-date').html(newDate);
}
function t_feed_addDefaultDate_snippet(dateParts, date, monthTitle, time) {
var lang = t_feed_returnLang_snippet();
var currentDate = new Date();
var postDateMs = Date.parse(date);
var diffDate = currentDate - postDateMs;
var days = Math.floor(diffDate / (60 * 60 * 1000 * 24));
var agoTitle = t_feed_getDictionary_snippet('ago');
var daysTitle = (lang == 'RU' || lang == 'UK') && (days > 4) ? t_feed_getDictionary_snippet('days')[1] : t_feed_getDictionary_snippet('days')[0];
var currentYear = currentDate.getFullYear();
var postYear = +date.split('-')[0];
var agoTitleSeparator = (lang == 'JA' || lang == 'CN') ? '' : ' ';
var year = postYear != currentYear ? postYear : '';
var defaultDate = '';
if (days == 0) {
defaultDate = t_feed_getDictionary_snippet('today');
}
if (days == 1) {
defaultDate = t_feed_getDictionary_snippet('yesterday');
}
if (days > 1 && days < 15) {
if (lang == 'FR' || lang == 'DE' || lang == 'ES' || lang == 'PT') {
defaultDate = agoTitle + agoTitleSeparator + days + agoTitleSeparator + daysTitle;
} else {
defaultDate = days + agoTitleSeparator + daysTitle + agoTitleSeparator + agoTitle;
}
}
if (days >= 15 || postYear > currentYear) {
defaultDate = t_feed_addFullDate_snippet(lang, dateParts[2], monthTitle, year) + time;
}
return defaultDate;
}
function t_feed_addFullDate_snippet(lang, day, month, year) {
var monthSeparator = lang == 'DE' ? '. ' : ' ';
var datePartSeparator = ' ';
if (lang == 'EN') {
datePartSeparator = year != '' ? ', ' : '';
} else if (lang == 'ES' || lang == 'PT') {
datePartSeparator = year != '' ? ' de ' : '';
}
var monthTitle = month[1];
if (lang == 'EN' || lang == 'DE') {
monthTitle = month[0];
}
if (lang == 'EN') {
return monthTitle + ' ' + day + datePartSeparator + year;
} else if (lang == 'JA' || lang == 'CN') {
return year + monthTitle + day;
} else {
return day + monthSeparator + monthTitle + datePartSeparator + year;
}
}
function t_feed_getDictionary_snippet(msg) {
var dict = [];
dict['seealso'] = {
EN: 'See also',
RU: 'Смотрите также',
FR: 'Voir également',
DE: 'Siehe auch',
ES: 'Ver también',
PT: 'Veja também',
UK: 'Дивись також',
JA: 'また見なさい',
CN: '也可以看看'
};
dict['today'] = {
EN: 'Today',
RU: 'Сегодня',
FR: 'Aujourd\'hui',
DE: 'Heute',
ES: 'Hoy',
PT: 'Hoje',
UK: 'Сьогодні',
JA: '今日',
CN: '今天'
};
dict['yesterday'] = {
EN: 'Yesterday',
RU: 'Вчера',
FR: 'Hier',
DE: 'Gestern',
ES: 'Ayer',
PT: 'Ontem',
UK: 'Вчора',
JA: '昨日',
CN: '昨天'
};
dict['days'] = {
EN: ['days'],
RU: ['дня', 'дней'],
FR: ['jours'],
DE: ['tagen'],
ES: ['dias'],
PT: ['dias'],
UK: ['дні', 'днів'],
JA: ['日'],
CN: ['天']
};
dict['ago'] = {
EN: 'ago',
RU: 'назад',
FR: 'Il y a',
DE: 'Vor',
ES: 'Hace',
PT: 'Há',
UK: 'тому',
JA: '前',
CN: '前'
};
dict['january'] = {
EN: ['January', 'january'],
RU: ['Январь', 'января'],
FR: ['Janvier', 'janvier'],
DE: ['Januar', 'januar'],
ES: ['Enero', 'de enero'],
PT: ['Janeiro', 'de janeiro'],
UK: ['Січень', 'січня'],
JA: ['一月', '一月'],
CN: ['一月', '一月']
};
dict['february'] = {
EN: ['February', 'february'],
RU: ['Февраль', 'февраля'],
FR: ['Février', 'février'],
DE: ['Februar', 'februar'],
ES: ['Febrero', 'de febrero'],
PT: ['Fevereiro', 'de fevereiro'],
UK: ['Лютий', 'лютого'],
JA: ['二月', '二月'],
CN: ['二月', '二月']
};
dict['march'] = {
EN: ['March', 'March'],
RU: ['Март', 'марта'],
FR: ['Mars', 'mars'],
DE: ['März', 'märz'],
ES: ['Marzo', 'de marzo'],
PT: ['Março', 'de março'],
UK: ['Березень', 'березня'],
JA: ['三月', '三月'],
CN: ['三月', '三月']
};
dict['april'] = {
EN: ['April', 'april'],
RU: ['Апрель', 'апреля'],
FR: ['Avril', 'avril'],
DE: ['April', 'april'],
ES: ['Abril', 'de abril'],
PT: ['Abril', 'de abril'],
UK: ['Квітень', 'квітня'],
JA: ['四月', '四月'],
CN: ['四月', '四月']
};
dict['may'] = {
EN: ['May', 'may'],
RU: ['Май', 'мая'],
FR: ['Mai', 'mai'],
DE: ['Kann', 'kann'],
ES: ['Mayo', 'de mayo'],
PT: ['Maio', 'de maio'],
UK: ['Травень', 'травня'],
JA: ['五月', '五月'],
CN: ['五月', '五月']
};
dict['june'] = {
EN: ['June', 'june'],
RU: ['Июнь', 'июня'],
FR: ['Juin', 'juin'],
DE: ['Juni', 'juni'],
ES: ['Junio', 'de junio'],
PT: ['Junho', 'de junho'],
UK: ['Червень', 'червня'],
JA: ['六月', '六月'],
CN: ['六月', '六月']
};
dict['july'] = {
EN: ['July', 'july'],
RU: ['Июль', 'июля'],
FR: ['Juillet', 'juillet'],
DE: ['Juli', 'Juli'],
ES: ['Julio', 'de julio'],
PT: ['Julho', 'de julho'],
UK: ['Липень', 'липня'],
JA: ['七月', '七月'],
CN: ['七月', '七月']
};
dict['august'] = {
EN: ['August', 'august'],
RU: ['Август', 'августа'],
FR: ['Août', 'août'],
DE: ['August', 'august'],
ES: ['Agosto', 'de agosto'],
PT: ['Agosto', 'de agosto'],
UK: ['Серпень', 'серпня'],
JA: ['八月', '八月'],
CN: ['八月', '八月']
};
dict['september'] = {
EN: ['September', 'september'],
RU: ['Сентябрь', 'сентября'],
FR: ['Septembre', 'septembre'],
DE: ['September', 'september'],
ES: ['Septiembre', 'de septiembre'],
PT: ['Setembro', 'de setembro'],
UK: ['Вересень', 'вересня'],
JA: ['九月', '九月'],
CN: ['九月', '九月']
};
dict['october'] = {
EN: ['October', 'october'],
RU: ['Октябрь', 'октября'],
FR: ['Octobre', 'octobre'],
DE: ['Oktober', 'oktober'],
ES: ['Octubre', 'de octubre'],
PT: ['Outubro', 'de outubro'],
UK: ['Жовтень', 'жовтня'],
JA: ['十月', '十月'],
CN: ['十月', '十月']
};
dict['november'] = {
EN: ['November', 'november'],
RU: ['Ноябрь', 'ноября'],
FR: ['Novembre', 'novembre'],
DE: ['November', 'november'],
ES: ['Noviembre', 'de noviembre'],
PT: ['Novembro', 'de novembro'],
UK: ['Листопад', 'листопада'],
JA: ['十一月', '十一月'],
CN: ['十一月', '十一月']
};
dict['december'] = {
EN: ['December', 'december'],
RU: ['Декабрь', 'декабря'],
FR: ['Décembre', 'décembre'],
DE: ['Dezember', 'dezember'],
ES: ['Diciembre', 'de diciembre'],
PT: ['Dezembro', 'de dezembro'],
UK: ['Грудень', 'грудня'],
JA: ['十二月', '十二月'],
CN: ['十二月', '十二月']
};
var lang = t_feed_returnLang_snippet();
if (typeof dict[msg] != 'undefined') {
if (typeof dict[msg][lang] != 'undefined' && dict[msg][lang] != '') {
return dict[msg][lang];
} else {
return dict[msg]['EN'];
}
}
}
function t_feed_returnLang_snippet() {
t_feed_defineUserLang_snippet();
var customLang = '';
var lang = 'EN';
if (typeof customLang != 'undefined' && customLang != '') {
lang = customLang.toUpperCase();
} else {
lang = window.tildaBrowserLang;
}
return lang;
}
function t_feed_defineUserLang_snippet() {
window.tildaBrowserLang = window.navigator.userLanguage || window.navigator.language;
window.tildaBrowserLang = window.tildaBrowserLang.toUpperCase();
if (window.tildaBrowserLang.indexOf('RU') != -1) {
window.tildaBrowserLang = 'RU';
} else if (window.tildaBrowserLang.indexOf('FR') != -1) {
window.tildaBrowserLang = 'FR';
} else if (window.tildaBrowserLang.indexOf('DE') != -1) {
window.tildaBrowserLang = 'DE';
} else if (window.tildaBrowserLang.indexOf('ES') != -1) {
window.tildaBrowserLang = 'ES';
} else if (window.tildaBrowserLang.indexOf('PT') != -1) {
window.tildaBrowserLang = 'PT';
} else if (window.tildaBrowserLang.indexOf('UK') != -1) {
window.tildaBrowserLang = 'UK';
} else if (window.tildaBrowserLang.indexOf('JA') != -1) {
window.tildaBrowserLang = 'JA';
} else if (window.tildaBrowserLang.indexOf('CN') != -1) {
window.tildaBrowserLang = 'CN';
} else {
window.tildaBrowserLang = 'EN';
}
}
</script>
<!--footer-->
<div id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="705564" data-tilda-page-id="13176281" data-tilda-page-alias="footer" data-tilda-formskey="59b517bfad01153865a4875be1bdd366" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="one" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU">
<div id="rec1684307921" class="r t-rec" style=" " data-animationappear="off" data-record-type="131" >
<!-- T123 -->
<div class="t123" >
<div class="t-container_100 ">
<div class="t-width t-width_100 ">
<!-- nominify begin -->
<script>
$('.example-3 .tn-atom').on('click', function () {
var $temp = $('<input>');
$('body').append($temp);
$temp.val($(this).text()).select();
document.execCommand('copy');
$temp.remove();
$(this).text('Скопирован!');
});
</script>
<style>
.example-3 { cursor: pointer; }
</style>
<!-- nominify end -->
</div>
</div>
</div>
</div>
<div id="rec480081308" class="r t-rec uc-cookie-block" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="886" >
<!-- T886 -->
<div class="t886 t886_closed" data-storage-item="t886cookiename_705564" style="">
<div class="t886__wrapper" style="background-color:#ffffff; width:800px;">
<div class="t886__text t-text t-text_xs t-valign_middle" field="text">На сайте мы используем cookie. Без них несладко.</div>
<div
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
type="button"
><span class="t-btnflex__text">Хорошо</span>
<style>#rec480081308 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#000000;--border-width:0px;border-style:none !important;border-radius:5px;box-shadow:none !important;font-weight:400;transition-duration:0.2s;transition-property: background-color, color, border-color, box-shadow, opacity, transform, gap;transition-timing-function: ease-in-out;}@media (hover: hover) {#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {color:#ffffff !important;background-color:#170f63 !important;}#rec480081308 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {color:#ffffff !important;background-color:#170f63 !important;}}</style></div>
</div>
</div>
<script type="text/javascript">
t_onReady(function () {
t_onFuncLoad('t886_init', function () {
t886_init('480081308');
});
});
</script>
<style>
#rec480081308 .t886__text {
text-align: left;
}
</style>
<style> #rec480081308 .t886__text { font-size: 14px; line-height: 1; color: #000000; }</style>
<style> #rec480081308 .t886__wrapper { border-radius:5px; }</style>
</div>
<div id="rec495453579" class="r t-rec uc-footer--type0" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="396" >
<!-- T396 -->
<style>#rec495453579 .t396__artboard {height: 847px; background-color: #ffffff; }#rec495453579 .t396__filter {height: 847px; }#rec495453579 .t396__carrier{height: 847px;background-position: center center;background-attachment: scroll;background-size: cover;background-repeat: no-repeat;}@media screen and (max-width: 1199px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height: 840px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment: scroll;}}@media screen and (max-width: 959px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height: 1196px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment: scroll;}}@media screen and (max-width: 639px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height: 1513px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment: scroll;}}@media screen and (max-width: 479px) {#rec495453579 .t396__artboard,#rec495453579 .t396__filter,#rec495453579 .t396__carrier {height: 1536px;}#rec495453579 .t396__filter {}#rec495453579 .t396__carrier {background-attachment: scroll;}}#rec495453579 .tn-elem[data-elem-id="1712236782477"] {
z-index: 3;
top: 74px;;
left: calc(50% - 600px + 20px);;
width: 105px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1712236782477"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1712236782477"] {
display: table;
left: calc(50% - 480px + 36px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1712236782477"] {
display: table;
top: 61px;;
left: calc(50% - 320px + 24px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1712236782477"] {
display: table;
top: 40pxpx;;
left: calc(50% - 240px + 15px);;
width: 105px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1712236782477"] {
display: table;
top: 36px;;
left: calc(50% - 160px + 7px);;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1712235605947"] {
z-index: 3;
top: 74px;;
left: calc(50% - 600px + 20px);;
width: 105px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom {
border-radius: 0px 0px 0px 0px;
opacity: 0;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1712235605947"] {
display: table;
left: calc(50% - 480px + 36px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1712235605947"] {
display: table;
top: 61px;;
left: calc(50% - 320px + 24px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1712235605947"] {
display: table;
top: 40px;;
left: calc(50% - 240px + 15px);;
width: 105px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1712235605947"] {
display: table;
top: 36px;;
left: calc(50% - 160px + 7px);;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1712235605947"] .tn-atom {
background-size: cover;
opacity: 0;
}
}#rec495453579 .tn-elem[data-elem-id="1692506348245"] {
z-index: 3;
top: 58px;;
left: calc(50% - 600px + 820px);;
width: 120px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1692506348245"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1692506348245"] {
display: table;
left: calc(50% - 480px + 640px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1692506348245"] {
display: table;
top: 755px;;
left: calc(50% - 320px + 24px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1692506348245"] {
display: table;
top: 835px;;
left: calc(50% - 240px + 20px);;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1692506348245"] {
display: table;
top: 863px;;
left: calc(50% - 160px + 10px);;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1692506631214"] {
z-index: 3;
top: 58px;;
left: calc(50% - 600px + 820px);;
width: 120px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom {
border-radius: 0px 0px 0px 0px;
opacity: 0;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1692506631214"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1692506631214"] {
display: table;
left: calc(50% - 480px + 640px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1692506631214"] {
display: table;
top: 757px;;
left: calc(50% - 320px + 24px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1692506631214"] {
display: table;
top: 845px;;
left: calc(50% - 240px + 20px);;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1692506631214"] {
display: table;
top: 873px;;
left: calc(50% - 160px + 10px);;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327289504"] {
color: #8999a9;
z-index: 3;
top: 121px;;
left: calc(50% - 600px + 20px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom {
vertical-align: middle;
color: #8999a9;
font-size: 18px;
font-family: var(--t-text-font,Arial);
line-height: 1.33;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327289504"] {
display: table;
left: calc(50% - 480px + 32px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327289504"] {
display: table;
top: 68px;;
left: calc(50% - 320px + 153px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327289504"] {
display: table;
top: 81px;;
left: calc(50% - 240px + 20px);;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327289504"] {
display: table;
left: calc(50% - 160px + 10px);;
width: 300px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327289504"] .tn-atom {
font-size: 16px;
line-height: 1.5;
background-size: cover;
}
}#rec495453579 .tn-elem[data-elem-id="1660327420094"] {
color: #172b4d;
z-index: 3;
top: 185px;;
left: calc(50% - 600px + 14px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327420094"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 24px;
font-family: var(--t-text-font,Arial);
line-height: 1.08;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327420094"] {
display: table;
left: calc(50% - 480px + 27px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327420094"] {
display: table;
top: 124px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327420094"] {
display: table;
left: calc(50% - 240px + 15px);;
width: 440px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327420094"] {
display: table;
left: calc(50% - 160px + 5px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327526179"] {
color: #172b4d;
z-index: 3;
top: 223px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327526179"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 24px;
font-family: var(--t-text-font,Arial);
line-height: 1.08;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327526179"] {
display: table;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327526179"] {
display: table;
top: 162px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327526179"] {
display: table;
left: calc(50% - 240px + 16px);;
width: 440px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327526179"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328247771"] {
color: #172b4d;
z-index: 3;
top: 547px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328247771"] {
display: table;
top: 557px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328247771"] {
display: table;
top: 532px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328247771"] {
display: table;
top: 622px;;
left: calc(50% - 240px + 16px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247771"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328247771"] {
display: table;
top: 614px;;
left: calc(50% - 160px + 6px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328067115"] {
color: #172b4d;
z-index: 3;
top: 217px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328067115"] {
display: table;
top: 219px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328067115"] {
display: table;
top: 158px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328067115"] {
display: table;
top: 258px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067115"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328067115"] {
display: table;
top: 258px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328673693"] {
color: #172b4d;
z-index: 3;
top: 229px;;
left: calc(50% - 600px + 816px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328673693"] {
display: table;
top: 229px;;
left: calc(50% - 480px + 636px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328673693"] {
display: table;
top: 874px;;
left: calc(50% - 320px + 20px);;
width: 256px;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328673693"] {
display: table;
top: 1008px;;
left: calc(50% - 240px + 20px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328673693"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328673693"] {
display: table;
top: 1017px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327820270"] {
color: #172b4d;
z-index: 3;
top: 305px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327820270"] {
display: table;
top: 315px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327820270"] {
display: table;
top: 246px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327820270"] {
display: table;
top: 258px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327820270"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327820270"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660728009618"] {
color: #172b4d;
z-index: 3;
top: 273px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660728009618"] {
display: table;
top: 281px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660728009618"] {
display: table;
top: 212px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660728009618"] {
display: table;
top: 220px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660728009618"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660728009618"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660728533851"] {
color: #ff8888;
z-index: 3;
top: 274px;;
left: calc(50% - 600px + 8px);;
width: 9px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom {
vertical-align: middle;
color: #ff8888;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660728533851"] {
display: table;
top: 283px;;
left: calc(50% - 480px + 20px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660728533851"] {
display: table;
top: 211px;;
left: calc(50% - 320px + 10px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660728533851"] {
display: table;
top: 222px;;
left: calc(50% - 240px + 8px);;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660728533851"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660728533851"] {
display: table;
top: 218px;;
left: calc(50% - 160px + 0px);;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328247775"] {
color: #172b4d;
z-index: 3;
top: 579px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328247775"] {
display: table;
top: 591px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328247775"] {
display: table;
top: 566px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328247775"] {
display: table;
top: 660px;;
left: calc(50% - 240px + 16px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247775"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328247775"] {
display: table;
top: 652px;;
left: calc(50% - 160px + 6px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328067118"] {
color: #172b4d;
z-index: 3;
top: 185px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328067118"] {
display: table;
top: 185px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328067118"] {
display: table;
top: 124px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328067118"] {
display: table;
top: 220px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067118"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328067118"] {
display: table;
top: 220px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328247777"] {
color: #172b4d;
z-index: 3;
top: 611px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328247777"] {
display: table;
top: 625px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328247777"] {
display: table;
top: 600px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328247777"] {
display: table;
top: 698px;;
left: calc(50% - 240px + 16px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328247777"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328247777"] {
display: table;
top: 690px;;
left: calc(50% - 160px + 6px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328067120"] {
color: #172b4d;
z-index: 3;
top: 249px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328067120"] {
display: table;
top: 253px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328067120"] {
display: table;
top: 192px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328067120"] {
display: table;
top: 296px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328067120"] {
display: table;
top: 296px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067120"] .tn-atom {
line-height: 1.2;
background-size: cover;
}
}#rec495453579 .tn-elem[data-elem-id="1660327823456"] {
color: #172b4d;
z-index: 3;
top: 337px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327823456"] {
display: table;
top: 349px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327823456"] {
display: table;
top: 280px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327823456"] {
display: table;
top: 296px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327823456"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327823456"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328067122"] {
color: #172b4d;
z-index: 3;
top: 281px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328067122"] {
display: table;
top: 287px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328067122"] {
display: table;
top: 226px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328067122"] {
display: table;
top: 334px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328067122"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328067122"] {
display: table;
top: 344px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1664355590156"] {
color: #172b4d;
z-index: 3;
top: 313px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1664355590156"] {
display: table;
top: 321px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1664355590156"] {
display: table;
top: 260px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1664355590156"] {
display: table;
top: 372px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1664355590156"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1664355590156"] {
display: table;
top: 382px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1738909171549"] {
color: #172b4d;
z-index: 3;
top: 345px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1738909171549"] {
display: table;
top: 355px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1738909171549"] {
display: table;
top: 294px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1738909171549"] {
display: table;
top: 410px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1738909171549"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1738909171549"] {
display: table;
top: 420px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328170303"] {
color: #8999a9;
z-index: 3;
top: 503px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom {
vertical-align: middle;
color: #8999a9;
font-size: 18px;
font-family: var(--t-text-font,Arial);
line-height: 1.33;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328170303"] {
display: table;
top: 513px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328170303"] {
display: table;
top: 488px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328170303"] {
display: table;
top: 578px;;
left: calc(50% - 240px + 16px);;
width: 440px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328170303"] {
display: table;
top: 570px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328170303"] .tn-atom {
font-size: 16px;
line-height: 1.5;
background-size: cover;
}
}#rec495453579 .tn-elem[data-elem-id="1660328581896"] {
color: #8999a9;
z-index: 3;
top: 185px;;
left: calc(50% - 600px + 820px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom {
vertical-align: middle;
color: #8999a9;
font-size: 18px;
font-family: var(--t-text-font,Arial);
line-height: 1.33;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328581896"] {
display: table;
left: calc(50% - 480px + 640px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328581896"] {
display: table;
top: 830px;;
left: calc(50% - 320px + 24px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328581896"] {
display: table;
top: 964px;;
left: calc(50% - 240px + 20px);;
width: 440px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328581896"] {
display: table;
top: 973px;;
left: calc(50% - 160px + 12px);;
width: 300px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328581896"] .tn-atom {
font-size: 16px;
line-height: 1.5;
background-size: cover;
}
}#rec495453579 .tn-elem[data-elem-id="1660328396738"] {
color: #8999a9;
z-index: 3;
top: 736px;;
left: calc(50% - 600px + 20px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328396738"] .tn-atom {
vertical-align: middle;
color: #8999a9;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328396738"] {
display: table;
top: 765px;;
left: calc(50% - 480px + 32px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328396738"] {
display: table;
top: 1125px;;
left: calc(50% - 320px + 24px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328396738"] {
display: table;
top: 1435px;;
left: calc(50% - 240px + 23px);;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328396738"] {
display: table;
top: 1428px;;
left: calc(50% - 160px + 9px);;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327824923"] {
color: #172b4d;
z-index: 3;
top: 401px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327824923"] {
display: table;
top: 417px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327824923"] {
display: table;
top: 348px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327824923"] {
display: table;
top: 372px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327824923"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327824923"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327826356"] {
color: #172b4d;
z-index: 3;
top: 369px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327826356"] {
display: table;
top: 383px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327826356"] {
display: table;
top: 314px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327826356"] {
display: table;
top: 334px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327826356"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327826356"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327833780"] {
color: #172b4d;
z-index: 3;
top: 433px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327833780"] {
display: table;
top: 451px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327833780"] {
display: table;
top: 382px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327833780"] {
display: table;
top: 410px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327833780"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327833780"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327835132"] {
color: #172b4d;
z-index: 3;
top: 497px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327835132"] {
display: table;
top: 519px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327835132"] {
display: table;
top: 450px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327835132"] {
display: table;
top: 486px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327835132"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327835132"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1695983077804"] {
color: #172b4d;
z-index: 3;
top: 586px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1695983077804"] {
display: table;
top: 619px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1695983077804"] {
display: table;
top: 590px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1695983077804"] {
display: table;
top: 1265px;;
left: calc(50% - 240px + 19px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1695983077804"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1695983077804"] {
display: table;
top: 1268px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660328020471"] {
color: #172b4d;
z-index: 3;
top: 618px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328020471"] {
display: table;
top: 653px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328020471"] {
display: table;
top: 624px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328020471"] {
display: table;
top: 1303px;;
left: calc(50% - 240px + 19px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328020471"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328020471"] {
display: table;
top: 1306px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1660327366231"] {
color: #8999a9;
z-index: 3;
top: 121px;;
left: calc(50% - 600px + 820px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom {
vertical-align: middle;
color: #8999a9;
font-size: 18px;
font-family: var(--t-text-font,Arial);
line-height: 1.33;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660327366231"] {
display: table;
left: calc(50% - 480px + 640px);;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom {
background-size: cover;
opacity: 1;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660327366231"] {
display: table;
top: 784px;;
left: calc(50% - 320px + 168px);;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom {
background-size: cover;
opacity: 1;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660327366231"] {
display: table;
top: 908px;;
left: calc(50% - 240px + 20px);;
width: 440px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660327366231"] {
display: table;
top: 925px;;
left: calc(50% - 160px + 10px);;
width: 300px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660327366231"] .tn-atom {
font-size: 16px;
line-height: 1.5;
background-size: cover;
}
}#rec495453579 .tn-elem[data-elem-id="1660723679978"] {
z-index: 3;
top: 0px;;
left: calc(50% - 600px + 787px);;
width: 1px;
height: 100%;
}
#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-color: #d0d6dd;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660723679978"] {
display: table;
left: calc(50% - 480px + 619px);;
height: 100%;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660723679978"] {
display: table;
}
#rec495453579 .tn-elem[data-elem-id="1660723679978"] .tn-atom {
background-size: cover;
opacity: 0;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660723679978"] {
display: table;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660723679978"] {
display: table;
}
}#rec495453579 .tn-elem[data-elem-id="1660625517826"] {
z-index: 3;
top: 0px;;
left: calc(50% - 600px + 0px);;
width: 592px;
height: 1px;
}
#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom {
border-radius: 0px 0px 0px 0px;
opacity: 0;
background-color: #d0d6dd;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660625517826"] {
display: table;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660625517826"] {
display: table;
top: 743px;;
left: calc(50% - 320px + 24px);;
}
#rec495453579 .tn-elem[data-elem-id="1660625517826"] .tn-atom {
background-size: cover;
opacity: 1;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660625517826"] {
display: table;
top: 782px;;
left: calc(50% - 240px + 20px);;
width: 440px;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660625517826"] {
display: table;
top: 770px;;
left: calc(50% - 160px + 10px);;
width: 300px;
}
}#rec495453579 .tn-elem[data-elem-id="1660625579543"] {
z-index: 3;
top: 0px;;
left: calc(50% - 600px + 0px);;
width: 592px;
height: 1px;
}
#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom {
border-radius: 0px 0px 0px 0px;
opacity: 0;
background-color: #d0d6dd;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660625579543"] {
display: table;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660625579543"] {
display: table;
top: 1060px;;
left: calc(50% - 320px + 24px);;
}
#rec495453579 .tn-elem[data-elem-id="1660625579543"] .tn-atom {
background-size: cover;
opacity: 1;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660625579543"] {
display: table;
top: 1204px;;
left: calc(50% - 240px + 20px);;
width: 440px;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660625579543"] {
display: table;
top: 1215px;;
left: calc(50% - 160px + 9px);;
width: 300px;
}
}#rec495453579 .tn-elem[data-elem-id="1660723501956"] {
z-index: 3;
top: 0px;;
left: calc(50% - 50% + 0px);;
width: 100%;
height: 1px;
}
#rec495453579 .tn-elem[data-elem-id="1660723501956"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-color: #d0d6dd;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660723501956"] {
display: table;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660723501956"] {
display: table;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660723501956"] {
display: table;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660723501956"] {
display: table;
}
}#rec495453579 .tn-elem[data-elem-id="1660328018624"] {
color: #172b4d;
z-index: 3;
top: 553px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1660328018624"] {
display: table;
top: 585px;;
left: calc(50% - 480px + 28px);;
width: 278px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1660328018624"] {
display: table;
top: 556px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1660328018624"] {
display: table;
top: 1227px;;
left: calc(50% - 240px + 19px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1660328018624"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1660328018624"] {
display: table;
top: 1230px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1705327730563"] {
z-index: 3;
top: calc(847px - 101px + 3px);;
left: calc(50% - 3% + -3px);;
width: 6%;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1705327730563"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1705327730563"] {
display: table;
top: calc(847px - 101px + 4px);;
left: calc(50% - 3% + 2px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1705327730563"] {
display: table;
top: calc(847px - 101px + -112px);;
left: calc(50% - 3% + 173px);;
width: 94px;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1705327730563"] {
display: table;
top: calc(847px - 101px + 57px);;
left: calc(50% - 3% + 147px);;
width: 100px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1705327730563"] {
display: table;
top: calc(847px - 101px + 25px);;
left: calc(50% - 3% + 1px);;
width: 71%;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1706690444440"] {
color: #172b4d;
z-index: 3;
top: 377px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1706690444440"] {
display: table;
top: 389px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1706690444440"] {
display: table;
top: 328px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1706690444440"] {
display: table;
top: 448px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1706690444440"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1706690444440"] {
display: table;
top: 458px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1707905565159"] {
color: #172b4d;
z-index: 3;
top: 441px;;
left: calc(50% - 600px + 420px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1707905565159"] {
display: table;
top: 457px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1707905565159"] {
display: table;
top: 396px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1707905565159"] {
display: table;
top: 524px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1707905565159"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1707905565159"] {
display: table;
top: 532px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1742980584483"] {
color: #172b4d;
z-index: 3;
top: 409px;;
left: calc(50% - 600px + 419px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1742980584483"] {
display: table;
top: 423px;;
left: calc(50% - 480px + 332px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1742980584483"] {
display: table;
top: 362px;;
left: calc(50% - 320px + 326px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1742980584483"] {
display: table;
top: 486px;;
left: calc(50% - 240px + 244px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1742980584483"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1742980584483"] {
display: table;
top: 496px;;
left: calc(50% - 160px + 166px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1708962345240"] {
color: #172b4d;
z-index: 3;
top: 682px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1708962345240"] {
display: table;
top: 721px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1708962345240"] {
display: table;
top: 692px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1708962345240"] {
display: table;
top: 1379px;;
left: calc(50% - 240px + 19px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1708962345240"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1708962345240"] {
display: table;
top: 1382px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1742566995756"] {
color: #172b4d;
z-index: 3;
top: 650px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1742566995756"] {
display: table;
top: 687px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1742566995756"] {
display: table;
top: 658px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1742566995756"] {
display: table;
top: 1341px;;
left: calc(50% - 240px + 19px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1742566995756"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1742566995756"] {
display: table;
top: 1344px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1723122768750"] {
color: #172b4d;
z-index: 3;
top: 373px;;
left: calc(50% - 600px + 886px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1723122768750"] {
display: table;
top: 409px;;
left: calc(50% - 480px + 709px);;
width: 215px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1723122768750"] {
display: table;
top: 973px;;
left: calc(50% - 320px + 89px);;
width: 330px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom {
vertical-align: middle;
white-space: normal;
background-size: cover;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1723122768750"] {
display: table;
top: 1128px;;
left: calc(50% - 240px + 71px);;
width: 440px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1723122768750"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1723122768750"] {
display: table;
top: 793px;;
left: calc(50% - 160px + 57px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] {
color: #172b4d;
z-index: 3;
top: 297px;;
left: calc(50% - 600px + 816px);;
width: 360px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] {
display: table;
top: 317px;;
left: calc(50% - 480px + 636px);;
width: 288px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] {
display: table;
top: 874px;;
left: calc(50% - 320px + 328px);;
width: 273px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom {
vertical-align: middle;
white-space: normal;
background-size: cover;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] {
display: table;
top: 1068px;;
left: calc(50% - 240px + 20px);;
width: 335px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1768398747383000001"] {
display: table;
top: 1099px;;
left: calc(50% - 160px + 9px);;
width: 300px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1726735717183"] {
color: #172b4d;
z-index: 3;
top: 465px;;
left: calc(50% - 600px + 16px);;
width: 336px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom {
vertical-align: middle;
color: #172b4d;
font-size: 16px;
font-family: var(--t-text-font,Arial);
line-height: 1.5;
font-weight: 400;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
--t396-shadow-text-opacity: 100%;
text-shadow: var(--t396-shadow-text-x, 0px) var(--t396-shadow-text-y, 0px) var(--t396-shadow-text-blur, 0px) rgba(var(--t396-shadow-text-color), var(--t396-shadow-text-opacity, 100%));
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1726735717183"] {
display: table;
top: 485px;;
left: calc(50% - 480px + 28px);;
width: 264px;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1726735717183"] {
display: table;
top: 416px;;
left: calc(50% - 320px + 20px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1726735717183"] {
display: table;
top: 448px;;
left: calc(50% - 240px + 16px);;
width: 212px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1726735717183"] .tn-atom {
font-size: 15px;
line-height: 1.47;
background-size: cover;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1726735717183"] {
display: table;
left: calc(50% - 160px + 6px);;
width: 140px;
height: auto;
}
}#rec495453579 .tn-elem[data-elem-id="1768399150632"] {
z-index: 3;
top: 369px;;
left: calc(50% - 600px + 820px);;
width: 55px;
height: 55px;
}
#rec495453579 .tn-elem[data-elem-id="1768399150632"] .tn-atom {
border-radius: 10px 10px 10px 10px;
background-color: #172b4d;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1768399150632"] {
display: table;
top: 417px;;
left: calc(50% - 480px + 640px);;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1768399150632"] {
display: table;
top: 968px;;
left: calc(50% - 320px + 24px);;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1768399150632"] {
display: table;
top: 1129px;;
left: calc(50% - 240px + 21px);;
width: 41px;
height: 41px;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1768399150632"] {
display: table;
top: 794px;;
left: calc(50% - 160px + 10px);;
}
}#rec495453579 .tn-elem[data-elem-id="1768399141699"] {
z-index: 3;
top: 378px;;
left: calc(50% - 600px + 829px);;
width: 38px;
height: auto;
}
#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom {
border-radius: 0px 0px 0px 0px;
background-position: center center;
border-width: var(--t396-borderwidth, 0);
border-style: var(--t396-borderstyle, solid);
border-color: var(--t396-bordercolor, transparent);
transition: background-color var(--t396-speedhover,0s) ease-in-out, color var(--t396-speedhover,0s) ease-in-out, border-color var(--t396-speedhover,0s) ease-in-out, box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;
}
#rec495453579 .tn-elem[data-elem-id="1768399141699"] .tn-atom__img {
border-radius: 0px 0px 0px 0px;
object-position: center center;
}
@media screen and (max-width: 1199px) {
#rec495453579 .tn-elem[data-elem-id="1768399141699"] {
display: table;
top: 426px;;
left: calc(50% - 480px + 649px);;
height: auto;
}
}
@media screen and (max-width: 959px) {
#rec495453579 .tn-elem[data-elem-id="1768399141699"] {
display: table;
top: 977px;;
left: calc(50% - 320px + 33px);;
height: auto;
}
}
@media screen and (max-width: 639px) {
#rec495453579 .tn-elem[data-elem-id="1768399141699"] {
display: table;
top: 1136px;;
left: calc(50% - 240px + 28px);;
width: 28px;
height: auto;
}
}
@media screen and (max-width: 479px) {
#rec495453579 .tn-elem[data-elem-id="1768399141699"] {
display: table;
top: 801px;;
left: calc(50% - 160px + 17px);;
height: auto;
}
}</style>
<div class='t396'>
<div class="t396__artboard" data-artboard-recid="495453579" data-artboard-screens="320,480,640,960,1200"
data-artboard-height="847"
data-artboard-valign="center"
data-artboard-upscale="grid"
data-artboard-height-res-320="1536"
data-artboard-height-res-480="1513"
data-artboard-height-res-640="1196"
data-artboard-height-res-960="840"
>
<div class="t396__carrier" data-artboard-recid="495453579"></div>
<div class="t396__filter" data-artboard-recid="495453579"></div>
<div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791712236782477' data-elem-id='1712236782477' data-elem-type='image'
data-field-top-value="74"
data-field-left-value="20"
data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-filewidth-value="259" data-field-fileheight-value="103" data-field-heightmode-value="hug"
data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42"
data-field-top-res-480-value="40px" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid"
data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42"
data-field-left-res-960-value="36" data-field-height-res-960-value="42"
>
<a class='tn-atom' href="https://slurm.io/" >
<img class='tn-atom__img' src='https://static.tildacdn.com/tild3630-3434-4637-b730-343538653735/slurm_logo_new_1_1.svg' alt='' imgfield='tn_img_1712236782477' />
</a>
</div>
<div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791712235605947' data-elem-id='1712235605947' data-elem-type='image'
data-field-top-value="74"
data-field-left-value="20"
data-field-height-value="42" data-field-width-value="105" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-filewidth-value="1188" data-field-fileheight-value="471" data-field-heightmode-value="hug"
data-field-top-res-320-value="36" data-field-left-res-320-value="7" data-field-height-res-320-value="42"
data-field-top-res-480-value="40" data-field-left-res-480-value="15" data-field-height-res-480-value="42" data-field-width-res-480-value="105" data-field-container-res-480-value="grid"
data-field-top-res-640-value="61" data-field-left-res-640-value="24" data-field-height-res-640-value="42"
data-field-left-res-960-value="36" data-field-height-res-960-value="42"
>
<a class='tn-atom' href="https://slurm.io/" >
<img class='tn-atom__img' src='https://static.tildacdn.com/tild6135-3939-4135-b731-656566303162/white.svg' alt='' imgfield='tn_img_1712235605947' />
</a>
</div>
<div class='t396__elem tn-elem uc-logo--on-white tn-elem__4954535791692506348245' data-elem-id='1692506348245' data-elem-type='image'
data-field-top-value="58"
data-field-left-value="820"
data-field-height-value="57" data-field-width-value="120" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-filewidth-value="87" data-field-fileheight-value="41" data-field-heightmode-value="hug"
data-field-top-res-320-value="863" data-field-left-res-320-value="10" data-field-height-res-320-value="57"
data-field-top-res-480-value="835" data-field-left-res-480-value="20" data-field-height-res-480-value="57"
data-field-top-res-640-value="755" data-field-left-res-640-value="24" data-field-height-res-640-value="57"
data-field-left-res-960-value="640" data-field-height-res-960-value="57"
>
<a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506348245">
<img class='tn-atom__img' src='https://static.tildacdn.com/tild6266-3163-4334-b735-323663336439/sb-logo-dark.svg' alt='' imgfield='tn_img_1692506348245' />
</a>
</div>
<div class='t396__elem tn-elem uc-logo--on-dark tn-elem__4954535791692506631214' data-elem-id='1692506631214' data-elem-type='image'
data-field-top-value="58"
data-field-left-value="820"
data-field-height-value="56" data-field-width-value="120" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-filewidth-value="86" data-field-fileheight-value="40" data-field-heightmode-value="hug"
data-field-top-res-320-value="873" data-field-left-res-320-value="10" data-field-height-res-320-value="56"
data-field-top-res-480-value="845" data-field-left-res-480-value="20" data-field-height-res-480-value="56"
data-field-top-res-640-value="757" data-field-left-res-640-value="24" data-field-height-res-640-value="56"
data-field-left-res-960-value="640" data-field-height-res-960-value="56"
>
<a class='tn-atom js-click-zero-stat' href="https://southbridge.io/?utm_source=slurm&utm_medium=footer" rel="nofollow" data-tilda-event-name="/tilda/click/rec495453579/button1692506631214">
<img class='tn-atom__img' src='https://static.tildacdn.com/tild3438-6232-4636-b961-366339386263/sb-logo-light.svg' alt='' imgfield='tn_img_1692506631214' />
</a>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660327289504' data-elem-id='1660327289504' data-elem-type='text'
data-field-top-value="121"
data-field-left-value="20"
data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="18"
data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16"
data-field-top-res-480-value="81" data-field-left-res-480-value="20"
data-field-top-res-640-value="68" data-field-left-res-640-value="153"
data-field-left-res-960-value="32" data-field-width-res-960-value="288"
>
<div class='tn-atom'field='tn_text_1660327289504'>Обучение ИТ-профессионалов</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327420094' data-elem-id='1660327420094' data-elem-type='text'
data-field-top-value="185"
data-field-left-value="14"
data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="24"
data-field-left-res-320-value="5" data-field-width-res-320-value="300"
data-field-left-res-480-value="15" data-field-width-res-480-value="440"
data-field-top-res-640-value="124" data-field-left-res-640-value="20"
data-field-left-res-960-value="27" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="tel:+74952480580"rel="nofollow"style="color: inherit">+7 (495) 248-05-80</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327526179' data-elem-id='1660327526179' data-elem-type='text'
data-field-top-value="223"
data-field-left-value="16"
data-field-height-value="26" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="24"
data-field-left-res-320-value="6" data-field-width-res-320-value="300"
data-field-left-res-480-value="16" data-field-width-res-480-value="440"
data-field-top-res-640-value="162" data-field-left-res-640-value="20"
data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="mailto:ask@slurm.io"rel="nofollow"style="color: inherit">ask@slurm.io</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247771' data-elem-id='1660328247771' data-elem-type='text'
data-field-top-value="547"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="614" data-field-left-res-320-value="6" data-field-width-res-320-value="300"
data-field-top-res-480-value="622" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="532" data-field-left-res-640-value="326"
data-field-top-res-960-value="557" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/corporate"style="color: inherit">Корпоративное обучение</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067115' data-elem-id='1660328067115' data-elem-type='text'
data-field-top-value="217"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="258" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="258" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="158" data-field-left-res-640-value="326"
data-field-top-res-960-value="219" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/calendar"style="color: inherit">Календарь</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791660328673693' data-elem-id='1660328673693' data-elem-type='text'
data-field-top-value="229"
data-field-left-value="816"
data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1017" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1008" data-field-left-res-480-value="20" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="874" data-field-left-res-640-value="20" data-field-width-res-640-value="256"
data-field-top-res-960-value="229" data-field-left-res-960-value="636" data-field-width-res-960-value="288"
>
<div class='tn-atom'><a href="https://southbridge.io/?utm_source=slurm&utm_medium=footer"rel="nofollow"style="color: inherit"><span style="font-weight: 700;">Southbridge.</span> DevOps-аутсорсер, поддержка высоконагруженных проектов.</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327820270' data-elem-id='1660327820270' data-elem-type='text'
data-field-top-value="305"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="258" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="246" data-field-left-res-640-value="20"
data-field-top-res-960-value="315" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://habr.com/ru/companies/slurm/articles/"rel="nofollow"style="color: inherit">Хабр</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu--podcast tn-elem__4954535791660728009618' data-elem-id='1660728009618' data-elem-type='text'
data-field-top-value="273"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="220" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="212" data-field-left-res-640-value="20"
data-field-top-res-960-value="281" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://slurm.mave.digital/"rel="nofollow"style="color: inherit">Подкаст</a></div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660728533851' data-elem-id='1660728533851' data-elem-type='text'
data-field-top-value="274"
data-field-left-value="8"
data-field-height-value="24" data-field-width-value="9" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="218" data-field-left-res-320-value="0"
data-field-top-res-480-value="222" data-field-left-res-480-value="8" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="211" data-field-left-res-640-value="10"
data-field-top-res-960-value="283" data-field-left-res-960-value="20"
>
<div class='tn-atom'field='tn_text_1660728533851'>•</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247775' data-elem-id='1660328247775' data-elem-type='text'
data-field-top-value="579"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="652" data-field-left-res-320-value="6" data-field-width-res-320-value="300"
data-field-top-res-480-value="660" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="566" data-field-left-res-640-value="326"
data-field-top-res-960-value="591" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/universal-tickets"style="color: inherit">Универсальные доступы</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067118' data-elem-id='1660328067118' data-elem-type='text'
data-field-top-value="185"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="220" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="220" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="124" data-field-left-res-640-value="326"
data-field-top-res-960-value="185" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/catalog"style="color: inherit">Все курсы</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328247777' data-elem-id='1660328247777' data-elem-type='text'
data-field-top-value="611"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="690" data-field-left-res-320-value="6" data-field-width-res-320-value="300"
data-field-top-res-480-value="698" data-field-left-res-480-value="16" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="600" data-field-left-res-640-value="326"
data-field-top-res-960-value="625" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/faq-for-oformitel"style="color: inherit">Оплата курса от компании</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067120' data-elem-id='1660328067120' data-elem-type='text'
data-field-top-value="249"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="296" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="296" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="192" data-field-left-res-640-value="326"
data-field-top-res-960-value="253" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/free"style="color: inherit">Бесплатные материалы</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327823456' data-elem-id='1660327823456' data-elem-type='text'
data-field-top-value="337"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="296" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="280" data-field-left-res-640-value="20"
data-field-top-res-960-value="349" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://t.me/slurmnews"style="color: inherit">Telegram</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328067122' data-elem-id='1660328067122' data-elem-type='text'
data-field-top-value="281"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="344" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="334" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="226" data-field-left-res-640-value="326"
data-field-top-res-960-value="287" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/speaker"style="color: inherit">Спикеры</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791664355590156' data-elem-id='1664355590156' data-elem-type='text'
data-field-top-value="313"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="382" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="372" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="260" data-field-left-res-640-value="326"
data-field-top-res-960-value="321" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/for-speakers"style="color: inherit">Для спикеров</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791738909171549' data-elem-id='1738909171549' data-elem-type='text'
data-field-top-value="345"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="420" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="410" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="294" data-field-left-res-640-value="326"
data-field-top-res-960-value="355" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://slurm.io/careers"style="color: inherit">Работа в Слёрме</a></div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660328170303' data-elem-id='1660328170303' data-elem-type='text'
data-field-top-value="503"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="18"
data-field-top-res-320-value="570" data-field-left-res-320-value="9" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16"
data-field-top-res-480-value="578" data-field-left-res-480-value="16" data-field-width-res-480-value="440"
data-field-top-res-640-value="488" data-field-left-res-640-value="326"
data-field-top-res-960-value="513" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'field='tn_text_1660328170303'>Корпоративным клиентам</div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660328581896' data-elem-id='1660328581896' data-elem-type='text'
data-field-top-value="185"
data-field-left-value="820"
data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="18"
data-field-top-res-320-value="973" data-field-left-res-320-value="12" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16"
data-field-top-res-480-value="964" data-field-left-res-480-value="20" data-field-width-res-480-value="440"
data-field-top-res-640-value="830" data-field-left-res-640-value="24" data-field-width-res-640-value="288"
data-field-left-res-960-value="640" data-field-width-res-960-value="288"
>
<div class='tn-atom'field='tn_text_1660328581896'>Партнёры</div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660328396738' data-elem-id='1660328396738' data-elem-type='text'
data-field-top-value="736"
data-field-left-value="20"
data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1428" data-field-left-res-320-value="9"
data-field-top-res-480-value="1435" data-field-left-res-480-value="23"
data-field-top-res-640-value="1125" data-field-left-res-640-value="24"
data-field-top-res-960-value="765" data-field-left-res-960-value="32" data-field-width-res-960-value="288"
>
<div class='tn-atom'field='tn_text_1660328396738'>© 2018—2025 ООО «Слёрм»</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327824923' data-elem-id='1660327824923' data-elem-type='text'
data-field-top-value="401"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="372" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="348" data-field-left-res-640-value="20"
data-field-top-res-960-value="417" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://vk.com/slurm_io"rel="nofollow"style="color: inherit">VK</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327826356' data-elem-id='1660327826356' data-elem-type='text'
data-field-top-value="369"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="334" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="314" data-field-left-res-640-value="20"
data-field-top-res-960-value="383" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://www.youtube.com/c/slurm_io"rel="nofollow"style="color: inherit">YouTube</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327833780' data-elem-id='1660327833780' data-elem-type='text'
data-field-top-value="433"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="410" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="382" data-field-left-res-640-value="20"
data-field-top-res-960-value="451" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://dzen.ru/slurm"rel="nofollow"style="color: inherit">Дзен</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660327835132' data-elem-id='1660327835132' data-elem-type='text'
data-field-top-value="497"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="486" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="450" data-field-left-res-640-value="20"
data-field-top-res-960-value="519" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://www.linkedin.com/company/slurm"rel="nofollow"style="color: inherit">LinkedIn</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791695983077804' data-elem-id='1695983077804' data-elem-type='text'
data-field-top-value="586"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1268" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1265" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="590" data-field-left-res-640-value="20"
data-field-top-res-960-value="619" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/privacy"style="color: inherit">Политика конфиденциальности</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328020471' data-elem-id='1660328020471' data-elem-type='text'
data-field-top-value="618"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1306" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1303" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="624" data-field-left-res-640-value="20"
data-field-top-res-960-value="653" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/oferta-slurm"style="color: inherit">Публичная оферта</a></div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791660327366231' data-elem-id='1660327366231' data-elem-type='text'
data-field-top-value="121"
data-field-left-value="820"
data-field-height-value="24" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="18"
data-field-top-res-320-value="925" data-field-left-res-320-value="10" data-field-width-res-320-value="300" data-field-fontsize-res-320-value="16"
data-field-top-res-480-value="908" data-field-left-res-480-value="20" data-field-width-res-480-value="440"
data-field-top-res-640-value="784" data-field-left-res-640-value="168"
data-field-left-res-960-value="640"
>
<div class='tn-atom'field='tn_text_1660327366231'>Генеральный партнёр Слёрм</div>
</div>
<div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660723679978' data-elem-id='1660723679978' data-elem-type='shape'
data-field-top-value="0"
data-field-left-value="787"
data-field-height-value="100" data-field-width-value="1" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="%"
data-field-widthunits-value="px"
data-field-left-res-960-value="619" data-field-height-res-960-value="100"
>
<div class='tn-atom' >
</div>
</div>
<div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625517826' data-elem-id='1660625517826' data-elem-type='shape'
data-field-top-value="0"
data-field-left-value="0"
data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-top-res-320-value="770" data-field-left-res-320-value="10" data-field-width-res-320-value="300"
data-field-top-res-480-value="782" data-field-left-res-480-value="20" data-field-width-res-480-value="440"
data-field-top-res-640-value="743" data-field-left-res-640-value="24"
>
<div class='tn-atom' >
</div>
</div>
<div class='t396__elem tn-elem uc-footer-line tn-elem__4954535791660625579543' data-elem-id='1660625579543' data-elem-type='shape'
data-field-top-value="0"
data-field-left-value="0"
data-field-height-value="1" data-field-width-value="592" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-top-res-320-value="1215" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1204" data-field-left-res-480-value="20" data-field-width-res-480-value="440"
data-field-top-res-640-value="1060" data-field-left-res-640-value="24"
>
<div class='tn-atom' >
</div>
</div>
<div class='t396__elem tn-elem uc-footer-line--top tn-elem__4954535791660723501956' data-elem-id='1660723501956' data-elem-type='shape'
data-field-top-value="0"
data-field-left-value="0"
data-field-height-value="1" data-field-width-value="100" data-field-axisy-value="top"
data-field-axisx-value="center"
data-field-container-value="window"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="%"
>
<div class='tn-atom' >
</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791660328018624' data-elem-id='1660328018624' data-elem-type='text'
data-field-top-value="553"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1230" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1227" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="556" data-field-left-res-640-value="20"
data-field-top-res-960-value="585" data-field-left-res-960-value="28" data-field-width-res-960-value="278"
>
<div class='tn-atom'><a href="https://api.edu.slurm.io/uploads/license_dpo.pdf"target="_blank"style="color: inherit">Лицензия №ДЛ-1368 от 22.08.2019</a></div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791705327730563' data-elem-id='1705327730563' data-elem-type='image'
data-field-top-value="3"
data-field-left-value="-3"
data-field-height-value="101" data-field-width-value="6" data-field-axisy-value="bottom"
data-field-axisx-value="center"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="%"
data-field-filewidth-value="600" data-field-fileheight-value="840" data-field-heightmode-value="hug"
data-field-top-res-320-value="25" data-field-left-res-320-value="1" data-field-height-res-320-value="99" data-field-width-res-320-value="71"
data-field-top-res-480-value="57" data-field-left-res-480-value="147" data-field-height-res-480-value="140" data-field-width-res-480-value="100" data-field-widthunits-res-480-value="px"
data-field-top-res-640-value="-112" data-field-left-res-640-value="173" data-field-height-res-640-value="132" data-field-width-res-640-value="94" data-field-widthunits-res-640-value="px"
data-field-top-res-960-value="4" data-field-left-res-960-value="2" data-field-height-res-960-value="81"
>
<div class='tn-atom' >
<img class='tn-atom__img' src='https://static.tildacdn.com/tild6562-3736-4663-b362-303664366334/idle-anim3_green_lin.gif' alt='' imgfield='tn_img_1705327730563' />
</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791706690444440' data-elem-id='1706690444440' data-elem-type='text'
data-field-top-value="377"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="458" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="448" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="328" data-field-left-res-640-value="326"
data-field-top-res-960-value="389" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/reviews"style="color: inherit">Отзывы</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791707905565159' data-elem-id='1707905565159' data-elem-type='text'
data-field-top-value="441"
data-field-left-value="420"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="532" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="524" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="396" data-field-left-res-640-value="326"
data-field-top-res-960-value="457" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/blog"style="color: inherit"><strong>Блог</strong></a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742980584483' data-elem-id='1742980584483' data-elem-type='text'
data-field-top-value="409"
data-field-left-value="419"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="496" data-field-left-res-320-value="166" data-field-width-res-320-value="140"
data-field-top-res-480-value="486" data-field-left-res-480-value="244" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="362" data-field-left-res-640-value="326"
data-field-top-res-960-value="423" data-field-left-res-960-value="332" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="/about_us"style="color: inherit">О нас</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791708962345240' data-elem-id='1708962345240' data-elem-type='text'
data-field-top-value="682"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1382" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1379" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="692" data-field-left-res-640-value="20"
data-field-top-res-960-value="721" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://slurm.io/info"style="color: inherit">Юридическая информация</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791742566995756' data-elem-id='1742566995756' data-elem-type='text'
data-field-top-value="650"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1344" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1341" data-field-left-res-480-value="19" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="658" data-field-left-res-640-value="20"
data-field-top-res-960-value="687" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://slurm.io/newsletter"style="color: inherit">Согласие на рассылку</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791723122768750' data-elem-id='1723122768750' data-elem-type='text'
data-field-top-value="373"
data-field-left-value="886"
data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="793" data-field-left-res-320-value="57" data-field-width-res-320-value="300"
data-field-top-res-480-value="1128" data-field-left-res-480-value="71" data-field-width-res-480-value="440" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="973" data-field-left-res-640-value="89" data-field-height-res-640-value="48" data-field-width-res-640-value="330" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight"
data-field-top-res-960-value="409" data-field-left-res-960-value="709" data-field-width-res-960-value="215"
>
<div class='tn-atom'field='tn_text_1723122768750'><strong style="font-weight: 700;">СДЕЛАНО В РОССИИ</strong><br>Входим в реестр Российского ПО</div>
</div>
<div class='t396__elem tn-elem uc-footer-menu--partner tn-elem__4954535791768398747383000001' data-elem-id='1768398747383000001' data-elem-type='text'
data-field-top-value="297"
data-field-left-value="816"
data-field-height-value="48" data-field-width-value="360" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-top-res-320-value="1099" data-field-left-res-320-value="9" data-field-width-res-320-value="300"
data-field-top-res-480-value="1068" data-field-left-res-480-value="20" data-field-width-res-480-value="335" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="874" data-field-left-res-640-value="328" data-field-height-res-640-value="48" data-field-width-res-640-value="273" data-field-container-res-640-value="grid" data-field-heightunits-res-640-value="px" data-field-textfit-res-640-value="autoheight"
data-field-top-res-960-value="317" data-field-left-res-960-value="636" data-field-width-res-960-value="288"
>
<div class='tn-atom'><a href="https://core247.io/"rel="nofollow"style="color: inherit"><strong style="font-weight: 700;">CORE 24/7.</strong> Официальный представитель Слёрма в Казахстане.</a></div>
</div>
<div class='t396__elem tn-elem uc-footer-menu tn-elem__4954535791726735717183' data-elem-id='1726735717183' data-elem-type='text'
data-field-top-value="465"
data-field-left-value="16"
data-field-height-value="24" data-field-width-value="336" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-textfit-value="autoheight" data-field-fontsize-value="16"
data-field-left-res-320-value="6" data-field-width-res-320-value="140"
data-field-top-res-480-value="448" data-field-left-res-480-value="16" data-field-width-res-480-value="212" data-field-fontsize-res-480-value="15"
data-field-top-res-640-value="416" data-field-left-res-640-value="20"
data-field-top-res-960-value="485" data-field-left-res-960-value="28" data-field-width-res-960-value="264"
>
<div class='tn-atom'><a href="https://rutube.ru/channel/39652890/"rel="nofollow"style="color: inherit">Rutube</a></div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791768399150632' data-elem-id='1768399150632' data-elem-type='shape'
data-field-top-value="369"
data-field-left-value="820"
data-field-height-value="55" data-field-width-value="55" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-top-res-320-value="794" data-field-left-res-320-value="10"
data-field-top-res-480-value="1129" data-field-left-res-480-value="21" data-field-height-res-480-value="41" data-field-width-res-480-value="41"
data-field-top-res-640-value="968" data-field-left-res-640-value="24"
data-field-top-res-960-value="417" data-field-left-res-960-value="640"
>
<div class='tn-atom' >
</div>
</div>
<div class='t396__elem tn-elem tn-elem__4954535791768399141699' data-elem-id='1768399141699' data-elem-type='image'
data-field-top-value="378"
data-field-left-value="829"
data-field-height-value="38" data-field-width-value="38" data-field-axisy-value="top"
data-field-axisx-value="left"
data-field-container-value="grid"
data-field-topunits-value="px"
data-field-leftunits-value="px"
data-field-heightunits-value="px"
data-field-widthunits-value="px"
data-field-filewidth-value="512" data-field-fileheight-value="512" data-field-heightmode-value="hug"
data-field-top-res-320-value="801" data-field-left-res-320-value="17" data-field-height-res-320-value="28"
data-field-top-res-480-value="1136" data-field-left-res-480-value="28" data-field-height-res-480-value="28" data-field-width-res-480-value="28"
data-field-top-res-640-value="977" data-field-left-res-640-value="33" data-field-height-res-640-value="38"
data-field-top-res-960-value="426" data-field-left-res-960-value="649" data-field-height-res-960-value="38"
>
<div class='tn-atom' >
<img class='tn-atom__img' src='https://static.tildacdn.com/tild6664-3637-4833-b338-393633633963/coat-of-arms_3.svg' alt='' imgfield='tn_img_1768399141699' />
</div>
</div>
</div>
</div>
<script>
t_onReady(function () {
t_onFuncLoad('t396_init', function () {
t396_init('495453579');
});
});
</script>
<!-- /T396 -->
</div>
<div id="rec825799301" class="r t-rec" style=" " data-animationappear="off" data-record-type="131" >
<!-- T123 -->
<div class="t123" >
<div class="t-container_100 ">
<div class="t-width t-width_100 ">
<!-- nominify begin -->
<style>
/*Добавляем скругления углов у карточек стандартных блоков*/
.t-popup__container{ /*Сюда вставляем класс блока из таблицы выше*/
border-radius: 16px !important; /*Радиус скругления у блока*/
overflow: hidden; /*Используется для некоторых блоков, к которым не применяется скругление*/
/*Если нужно скруглить углы, каждый по отдельности, то используйте вместо одного значения четыре,
написав их через пробел, например 20px 30px 10px 50px*/
}
</style>
<style>
/*Размытие фона*/
.t-popup.t-popup_show {
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(5px);
}
</style>
<!-- nominify end -->
</div>
</div>
</div>
</div>
</div>
<!--/footer-->
<!-- POST END -->
</div>
<!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 49219348 --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='49219348';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0","cmsCatalog":"1"}}},ecommerce:"dataLayer"});},2000);</script> <noscript><div><img src="https://mc.yandex.ru/watch/49219348" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
window.tildastatscroll='yes';setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'3ca9b9471ab76a4a58118835b5fb250d','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script> <!-- Rating Mail.ru counter --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){var _tmr=window._tmr||(window._tmr=[]);_tmr.push({id:"3557140",type:"pageView",start:(new Date()).getTime()});window.mainMailruId='3557140';(function(d,w,id) {if(d.getElementById(id)) {return;}
var ts=d.createElement("script");ts.type="text/javascript";ts.async=true;ts.id=id;ts.src="https://top-fwz1.mail.ru/js/code.js";var f=function() {var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(ts,s);};if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,"topmailru-code");},2000);</script> <noscript><img src="https://top-fwz1.mail.ru/counter?id=3557140;js=na" style="border:0;position:absolute;left:-9999px;width:1px;height:1px" alt="Top.Mail.Ru" /></noscript> <!-- //Rating Mail.ru counter --> </body> </html>