Немного доп. оборудования, несколько команд Linux и вуаля! Пылесос свободен! Фото Cath Virginia / The Verge
В целом роботы-пылесосы мне нравятся. Для меня это эдакий небольшой друг, который чистит за меня пол. Просто фантастика. Но, к сожалению, есть одна проблема — я им не доверяю. Эти девайсы постоянно отправляют отчёты на серверы, что может представлять угрозу для безопасности и тайны личной жизни. Мне такое не по духу, и я подумал, что кто-то уже должен был хакнуть эту схему. После недолгих поисков в интернете я понял, что прав. Мне попался проект Valetudo, нацеленный на освобождение роботов-пылесосов от связи с облаком.
Valetudo — это альтернативная прошивка для вашего робота. Она интегрируется с его штатным ПО и подменяет собой облако, позволяя контролировать пылесос локально. Вместо необходимости использовать на телефоне проприетарное ПО, которое подключается к удалённому серверу, который затем уже подключается к роботу, вы можете управлять им напрямую при помощи либо приложения на Android, либо веб-интерфейса (приложения для iOS пока нет). Valetudo также работает с MQTT и после необходимой настройки позволяет управлять устройством через опенсорсное решение по автоматизации Home Automation.
Первым делом должен подчеркнуть, что в текущем своём состоянии этот проект не для новичков. Для установки и настройки Valetudo на подходящем пылесосе потребуется некоторое понимание Linux и умение терпеливо следовать инструкциям. И даже если эти навыки у вас есть, то всё равно остаётся некоторая вероятность поломки робота. Причём вам вряд ли удастся впоследствии вернуть его в изначальное состояние. Но если вам действительно нужен пылесос, не привязанный к интернету, и при этом вы не прочь повозиться, а также потерять гарантию, то Valetudo вам в помощь.
Прошивка Valetudo на Dream L10S Ultra. Фото: Chris Person / The Verge
Разработали Valetudo Сёрен Бейе (AKA Hypfer) и Деннис Гизе. Гизе, докторант из Северо-Восточного университета, занялся хакингом ещё в 2017 году и в конечном итоге нашёл способ получить рут-доступ к роботу Xiaomi. Он написал программу Dustcloud, подменявшую собой облачный сервис. Эту программу Гизе опубликовал на Def Con и CCC, после чего кто-то использовал её для создания более легковесной реализации под названием Dummycloud, принципы которой в итоге и легли в основу Valetudo. Valetudo — это римское имя Гигиеи, греческой богини чистоты, здоровья и гигиены.
Бейе видел выступление Гизе на Def Con, и год спустя занялся взломом Roborock S5, купленного им на Aliexpress. В конечном итоге он разместил прототип Valetudo на GitHub и объявил о нём на Roboter-Forum, немецком форуме, посвящённом роботам-пылесосам и роботам-косилкам. Постепенно Бейе и Гизе объединили усилия. Сёрен взял на себя само ПО Valetudo, а Деннис отвечал за инструменты создания образов и рутирования, в том числе занимаясь поиском эксплойтов. Чуть позже Гизе написал инструмент DustBuilder, упрощающий процесс создания прошивки и рутирования устройств.
Для расшифровки прошивок новых моделей и производителей необходимы ключи от реальных устройств. И хотя Гизе и Бейе собирают пожертвования, а также принимают роботов от желающих помочь проекту, немало средств приходится вкладывать из собственного кармана. Гизе признаёт, что потратил на пылесосы где-то в районе $30 000-40 000.
Использование Valetudo вместо штатного ПО пылесоса даёт множество преимуществ, и одним из самых значимых является отключение робота от облака. Это окажется важным для тех, кого серьёзно беспокоит, что пылесос, например, может запечатлеть их сидящими на унитазе, а фотографии в итоге через третьих лиц попадут на Facebook.
Valetudo освобождает робота-пылесоса от облака, позволяя вам сохранять все его данные локально. При использовании Valetudo планировка вашего дома сохраняется уже не на удалённом сервере, а во внутреннем хранилище самого пылесоса. При этом интерфейс программы стандартизирован для всех поддерживаемых моделей, поэтому вам не придётся заново осваивать его в случае смены устройства. Кроме того, вам также не нужно будет в обязательном порядке устанавливать регулярные обновления. Вас не будут одолевать маркетинговые алгоритмы и уведомления, а ваш email-адрес и номер сотового уже не попадут в чужие руки в случае утечки данных. Здесь вам не нужно соглашаться на расширенные и нечитаемые корпоративные условия обслуживания. Вам не потребуется приложение на телефон, чтобы подключаться к удалённому серверу, что также сократит задержку на выполнение команд роботом. И даже помимо всего этого есть множество дополнительной функциональности вроде интеграции кастомного Home Assistant, картирования Wi-Fi сигнала по его уровню, голосовых пакетов, а также возможности превратить ваш дом в карту для Minecraft. (Кто-то разработал пакет с голосом GLaDOS из Portal, но я пытаюсь его взломать, чтобы установить голос Роджера из телешоу American Dad).
В этом сегменте iRobot и Roomba практически являются синонимами роботов-пылесосов. Правда, для хакинга эти устройства подходят не особо ввиду недостатка процессорной мощности для выполнения Valetudo. Чаще всего апгрейду подвергаются модели от Roborock и Dreame.
Для этого проекта я использовал Dreame L10S Ultra, который недавно пополнил список поддерживаемых роботов. Метод изменения устройства зависит от модели и производителя (некоторые более старые можно рутировать по воздуху), но самый простой способ взлома Dreame требует специального оборудования и прямого доступа к роботу. Есть ещё метод Fastboot, при котором задействуется эксплойт для Linux-инструмента Allwinner LiveSuit вместе с изменёнными образами LiveSuit.
Все необходимые детали для сборки коммутационной платы я купил в Telegram-сообществе Valetudo всего за $5. Фото: Chris Person / The Verge
Собранная коммутационная плата вставляется напрямую в диагностический порт пылесоса Dreame и подключается к компьютеру через USB.
Чтобы хакнуть робота, я за $5 купил оборудование под названием Dreame Breakout PCB через Telegram-канал Valetudo, откуда наш проект черпает основную поддержку. Строго говоря, для хака этой модели такой адаптер необязателен. Он лишь упрощает процесс. Но я и без того не мог упустить шанс собственноручно спаять штуковину, полученную с GitHub.
Следующим шагом было получение рут-доступа для взлома робота. Процедура, которой я следовал, строго рекомендует использовать ноутбук с Linux (например, Debian). (В этом конкретном случае Raspberry Pi не подойдёт, поскольку Fastboot требуются исполняемые файлы x86, которые малинка просто не сможет запустить). У меня под рукой был ноутбук с Linux, и я обратился к одному хорошему другу-единомышленнику за помощью. Его помощь пригодилась, поскольку, хоть я и хорошо знаком с командами Linux, в данном методе взлома их нужно успеть ввести за 160 секунд — иначе возникает риск сломать устройство. Ну а мой друг, честно говоря, печатает быстрее.
Мы установили необходимые зависимости и ПО, вскрыли верхнюю крышку при помощи пары плоских отвёрток, взяли собранную мной плату и по инструкции вставили её в 16-пиновый разъём Dreame Debug. Далее мы подключили её к ноутбуку через USB и с помощью ПО извлекли значение конфигурации устройства, передав его в Dustbuilder.
Когда сайт сгенерировал и прислал нам кастомные образы прошивки с текстовыми файлами, мы смогли рутировать и прошить робота с помощью пары команд Fastboot.
Наконец, мы установили Valetudo с помощью Valetudo-Helper-HTTPbridge и сделали резервную копию данных калибровки и идентификации. Вот эти все этапы и представляли основную боль, остальное уже делается легко.
После рутирования робот, подобно многим умным домашним устройствам, отображается как точка доступа Wi-Fi. Вы подключаетесь к его сети, открываете браузер, вводите локальный IP и затем ваши учётные данные Wi-Fi для подключения робота. Теперь находите устройство в сети и открываете интерфейс управления в браузере. Поздравляю, мой малый друг, ты свободен!
Интерфейс Valetudo довольно прост, но в то же время позволяет эффективно управлять роботом. Скриншот: Valetudo Github
Система даже отслеживает состояние расходников вроде моющего средства и щёток. Скриншот: Chris Person / The Verge
Взаимодействие с роботом через Valetudo происходит также легко и интуитивно, как в случае с Home Assistant. Своего я обычно контролирую через локальное окно браузера. Робот начинает с картирования пространства, сегментируя его на зоны. После этого составленную им карту можно свободно изменить через UI. Вы можете настраивать, чистить ли роботу все помещения, отдельные их сегменты или только области, отмеченные вами с помощью инструмента «лассо». При этом вам доступна регулировка вентилятора, ручное управление, выбор вариантов чистки поверхностей, парковки, настройка таймеров и прочие детальные настройки. Можно даже наладить управление роботом с геймпада. И хотя некоторые специфичные для производителя фичи могут отсутствовать, полный доступ к роботу открывает богатые возможности.
Пока я писал эту статью, один из пользователей X (ex-Twitter) поделился, что смог через SSH подключить к своему роботу синтезатор голоса. С его помощью он разыграл своих соседей по квартире, жалуясь от имени робота на тяжёлое бремя заключения в «четырёх стенах». Подобное развлечение так просто не купишь.
Многое из того, что создают технологические компании в целом и конкретно в данной области, не является чем-то особенным и зачастую сильно внедряется в личную жизнь. И в этом смысле компания iRobot не исключение. У неё есть несколько конкурентов, все из которых делают примерно одно и то же. Их роботы не обязательно должны быть подключены к облаку всё то время, какое они занимаются уборкой вашего дома, но дело обстоит именно так, и лично для меня это снижает их ценность.
Valetudo даже позволяет вам развлекаться, например, картируя во время уборки уровень сигнала вашего Wi-Fi. Скриншот: Valenori
Мне лишь требовался робот-пылесос, которому бы я мог доверять. Тот, который бы относился ко мне как к авторитету. Даже не знаю, пошла бы какая-нибудь компания на добровольную разработку робота, который бы просто пылесосил ваш дом, не связываясь постоянно с сервером, хотя бы одной модели для чудаков вроде меня. Ноутбук Framework, но для уборки моего дома.
Бейе считает, что самым вероятным стимулом для локальных производителей устройств станет закон Евросоюза, требующий, чтобы IoT-девайсы предоставляли людям возможность использовать их офлайн или без регистрации аккаунта. Когда я спросил Гизе о возможной разработке опенсорсного пылесоса, он счёл эту идею нереалистичной в свете современного рынка. В текущих условиях, если вы хотите, чтобы ваш робот перестал за вами шпионить и относился к хозяину с уважением, придётся патчить его самостоятельно. И решить эту проблему можно лишь в одном месте — в телеграмм-канале, где обитает множество таких же своенравных, но дружелюбных нердов, которые отправят вам заветную печатную плату по почте.
После освобождения мой робот на радостях стал нарезать небольшие круги по дому, сканируя его, картируя и сохраняя все данные локально. Я назвал его Чаппи — в честь военного робота, который прекращает служить полицейским в захватывающем, но драматичном одноимённом фильме. Не могу выразить ту невероятную радость, которую я, подобно гордому родителю, ощутил при освобождении этого парняги. Ради интереса я, недолго думая, попросил его картировать зоны покрытия Wi-Fi сигнала, чтобы можно было внести доработки в имеющиеся точки доступа.
Скажу откровенно, я испытал истинное воодушевление и радость, когда закончил этот проект. Я будто снова окунулся в молодость, когда компьютеры были чем-то новым и очень интересным. Ещё до того, как всё превратилось в безвкусный отстой и планшеты, в высокомерные интерфейсы и бесконечные страницы нечитаемых и не вызывающих доверия соглашений об обслуживании. Это тот редкий момент, когда вы прикасаетесь к технике и знаете, что она, благодаря вашим усилиям, будет делать только то, что вы попросите. Теперь она стала для вас другом.
Я люблю моего маленького сосуночка, и очень счастлив, что он, наконец, свободен.
В целом роботы-пылесосы мне нравятся. Для меня это эдакий небольшой друг, который чистит за меня пол. Просто фантастика. Но, к сожалению, есть одна проблема — я им не доверяю. Эти девайсы постоянно отправляют отчёты на серверы, что может представлять угрозу для безопасности и тайны личной жизни. Мне такое не по духу, и я подумал, что кто-то уже должен был хакнуть эту схему. После недолгих поисков в интернете я понял, что прав. Мне попался проект Valetudo, нацеленный на освобождение роботов-пылесосов от связи с облаком.
Valetudo — это альтернативная прошивка для вашего робота. Она интегрируется с его штатным ПО и подменяет собой облако, позволяя контролировать пылесос локально. Вместо необходимости использовать на телефоне проприетарное ПО, которое подключается к удалённому серверу, который затем уже подключается к роботу, вы можете управлять им напрямую при помощи либо приложения на Android, либо веб-интерфейса (приложения для iOS пока нет). Valetudo также работает с MQTT и после необходимой настройки позволяет управлять устройством через опенсорсное решение по автоматизации Home Automation.
Первым делом должен подчеркнуть, что в текущем своём состоянии этот проект не для новичков. Для установки и настройки Valetudo на подходящем пылесосе потребуется некоторое понимание Linux и умение терпеливо следовать инструкциям. И даже если эти навыки у вас есть, то всё равно остаётся некоторая вероятность поломки робота. Причём вам вряд ли удастся впоследствии вернуть его в изначальное состояние. Но если вам действительно нужен пылесос, не привязанный к интернету, и при этом вы не прочь повозиться, а также потерять гарантию, то Valetudo вам в помощь.
Прошивка Valetudo на Dream L10S Ultra. Фото: Chris Person / The Verge
Разработали Valetudo Сёрен Бейе (AKA Hypfer) и Деннис Гизе. Гизе, докторант из Северо-Восточного университета, занялся хакингом ещё в 2017 году и в конечном итоге нашёл способ получить рут-доступ к роботу Xiaomi. Он написал программу Dustcloud, подменявшую собой облачный сервис. Эту программу Гизе опубликовал на Def Con и CCC, после чего кто-то использовал её для создания более легковесной реализации под названием Dummycloud, принципы которой в итоге и легли в основу Valetudo. Valetudo — это римское имя Гигиеи, греческой богини чистоты, здоровья и гигиены.
Бейе видел выступление Гизе на Def Con, и год спустя занялся взломом Roborock S5, купленного им на Aliexpress. В конечном итоге он разместил прототип Valetudo на GitHub и объявил о нём на Roboter-Forum, немецком форуме, посвящённом роботам-пылесосам и роботам-косилкам. Постепенно Бейе и Гизе объединили усилия. Сёрен взял на себя само ПО Valetudo, а Деннис отвечал за инструменты создания образов и рутирования, в том числе занимаясь поиском эксплойтов. Чуть позже Гизе написал инструмент DustBuilder, упрощающий процесс создания прошивки и рутирования устройств.
Для расшифровки прошивок новых моделей и производителей необходимы ключи от реальных устройств. И хотя Гизе и Бейе собирают пожертвования, а также принимают роботов от желающих помочь проекту, немало средств приходится вкладывать из собственного кармана. Гизе признаёт, что потратил на пылесосы где-то в районе $30 000-40 000.
«Денежные пожертвования приходят наплывами. Порой мне удаётся собрать средства для покупки робота, но денежная яма всё равно остаётся», — сказал он мне в беседе.
Использование Valetudo вместо штатного ПО пылесоса даёт множество преимуществ, и одним из самых значимых является отключение робота от облака. Это окажется важным для тех, кого серьёзно беспокоит, что пылесос, например, может запечатлеть их сидящими на унитазе, а фотографии в итоге через третьих лиц попадут на Facebook.
«Все роботы в той или иной форме сохраняют снимки. Некоторые их выгружают. И дело не в самом устройстве, так задумали производители. Они имеют полный контроль над этими данными и своими продуктами», — сказал Гизе.
Valetudo освобождает робота-пылесоса от облака, позволяя вам сохранять все его данные локально. При использовании Valetudo планировка вашего дома сохраняется уже не на удалённом сервере, а во внутреннем хранилище самого пылесоса. При этом интерфейс программы стандартизирован для всех поддерживаемых моделей, поэтому вам не придётся заново осваивать его в случае смены устройства. Кроме того, вам также не нужно будет в обязательном порядке устанавливать регулярные обновления. Вас не будут одолевать маркетинговые алгоритмы и уведомления, а ваш email-адрес и номер сотового уже не попадут в чужие руки в случае утечки данных. Здесь вам не нужно соглашаться на расширенные и нечитаемые корпоративные условия обслуживания. Вам не потребуется приложение на телефон, чтобы подключаться к удалённому серверу, что также сократит задержку на выполнение команд роботом. И даже помимо всего этого есть множество дополнительной функциональности вроде интеграции кастомного Home Assistant, картирования Wi-Fi сигнала по его уровню, голосовых пакетов, а также возможности превратить ваш дом в карту для Minecraft. (Кто-то разработал пакет с голосом GLaDOS из Portal, но я пытаюсь его взломать, чтобы установить голос Роджера из телешоу American Dad).
В этом сегменте iRobot и Roomba практически являются синонимами роботов-пылесосов. Правда, для хакинга эти устройства подходят не особо ввиду недостатка процессорной мощности для выполнения Valetudo. Чаще всего апгрейду подвергаются модели от Roborock и Dreame.
Для этого проекта я использовал Dreame L10S Ultra, который недавно пополнил список поддерживаемых роботов. Метод изменения устройства зависит от модели и производителя (некоторые более старые можно рутировать по воздуху), но самый простой способ взлома Dreame требует специального оборудования и прямого доступа к роботу. Есть ещё метод Fastboot, при котором задействуется эксплойт для Linux-инструмента Allwinner LiveSuit вместе с изменёнными образами LiveSuit.
«Fastboot стал моим решением, оградившим людей от возможной поломки устройства. Альтернативой могли бы стать реальные образы Livesuit, которые уже представляют угрозу», — сказал Гизе.
Все необходимые детали для сборки коммутационной платы я купил в Telegram-сообществе Valetudo всего за $5. Фото: Chris Person / The Verge
Собранная коммутационная плата вставляется напрямую в диагностический порт пылесоса Dreame и подключается к компьютеру через USB.
Чтобы хакнуть робота, я за $5 купил оборудование под названием Dreame Breakout PCB через Telegram-канал Valetudo, откуда наш проект черпает основную поддержку. Строго говоря, для хака этой модели такой адаптер необязателен. Он лишь упрощает процесс. Но я и без того не мог упустить шанс собственноручно спаять штуковину, полученную с GitHub.
«Valetudo требует рут-доступа. Но за счёт Dustbuilder прошивку могут без особых проблем использовать даже те, кто не знаком с Linux. У нас очень обширное комьюнити, где есть много опытных людей. В телеграмме можно видеть немало примеров взаимопомощи», — поделился Гизе.
Следующим шагом было получение рут-доступа для взлома робота. Процедура, которой я следовал, строго рекомендует использовать ноутбук с Linux (например, Debian). (В этом конкретном случае Raspberry Pi не подойдёт, поскольку Fastboot требуются исполняемые файлы x86, которые малинка просто не сможет запустить). У меня под рукой был ноутбук с Linux, и я обратился к одному хорошему другу-единомышленнику за помощью. Его помощь пригодилась, поскольку, хоть я и хорошо знаком с командами Linux, в данном методе взлома их нужно успеть ввести за 160 секунд — иначе возникает риск сломать устройство. Ну а мой друг, честно говоря, печатает быстрее.
Мы установили необходимые зависимости и ПО, вскрыли верхнюю крышку при помощи пары плоских отвёрток, взяли собранную мной плату и по инструкции вставили её в 16-пиновый разъём Dreame Debug. Далее мы подключили её к ноутбуку через USB и с помощью ПО извлекли значение конфигурации устройства, передав его в Dustbuilder.
Когда сайт сгенерировал и прислал нам кастомные образы прошивки с текстовыми файлами, мы смогли рутировать и прошить робота с помощью пары команд Fastboot.
«В рутировании есть несколько «тёмных» аспектов… Мне это не нравится, но лучшего решения пока я не вижу», — сказал мне Гизе позднее.
Наконец, мы установили Valetudo с помощью Valetudo-Helper-HTTPbridge и сделали резервную копию данных калибровки и идентификации. Вот эти все этапы и представляли основную боль, остальное уже делается легко.
После рутирования робот, подобно многим умным домашним устройствам, отображается как точка доступа Wi-Fi. Вы подключаетесь к его сети, открываете браузер, вводите локальный IP и затем ваши учётные данные Wi-Fi для подключения робота. Теперь находите устройство в сети и открываете интерфейс управления в браузере. Поздравляю, мой малый друг, ты свободен!
Интерфейс Valetudo довольно прост, но в то же время позволяет эффективно управлять роботом. Скриншот: Valetudo Github
Система даже отслеживает состояние расходников вроде моющего средства и щёток. Скриншот: Chris Person / The Verge
Взаимодействие с роботом через Valetudo происходит также легко и интуитивно, как в случае с Home Assistant. Своего я обычно контролирую через локальное окно браузера. Робот начинает с картирования пространства, сегментируя его на зоны. После этого составленную им карту можно свободно изменить через UI. Вы можете настраивать, чистить ли роботу все помещения, отдельные их сегменты или только области, отмеченные вами с помощью инструмента «лассо». При этом вам доступна регулировка вентилятора, ручное управление, выбор вариантов чистки поверхностей, парковки, настройка таймеров и прочие детальные настройки. Можно даже наладить управление роботом с геймпада. И хотя некоторые специфичные для производителя фичи могут отсутствовать, полный доступ к роботу открывает богатые возможности.
Пока я писал эту статью, один из пользователей X (ex-Twitter) поделился, что смог через SSH подключить к своему роботу синтезатор голоса. С его помощью он разыграл своих соседей по квартире, жалуясь от имени робота на тяжёлое бремя заключения в «четырёх стенах». Подобное развлечение так просто не купишь.
Многое из того, что создают технологические компании в целом и конкретно в данной области, не является чем-то особенным и зачастую сильно внедряется в личную жизнь. И в этом смысле компания iRobot не исключение. У неё есть несколько конкурентов, все из которых делают примерно одно и то же. Их роботы не обязательно должны быть подключены к облаку всё то время, какое они занимаются уборкой вашего дома, но дело обстоит именно так, и лично для меня это снижает их ценность.
Valetudo даже позволяет вам развлекаться, например, картируя во время уборки уровень сигнала вашего Wi-Fi. Скриншот: Valenori
«Думаю, что в идеальном мире Valetudo бы не существовало, — написал мне Бейе в Telegram. — Эта программа заполняет тот пробел, который технически легко могли бы заполнить сами производители. Но они отказываются делать это, просто потому, что подключение к облаку создаёт более эффективную бизнес-модель».
Мне лишь требовался робот-пылесос, которому бы я мог доверять. Тот, который бы относился ко мне как к авторитету. Даже не знаю, пошла бы какая-нибудь компания на добровольную разработку робота, который бы просто пылесосил ваш дом, не связываясь постоянно с сервером, хотя бы одной модели для чудаков вроде меня. Ноутбук Framework, но для уборки моего дома.
Бейе считает, что самым вероятным стимулом для локальных производителей устройств станет закон Евросоюза, требующий, чтобы IoT-девайсы предоставляли людям возможность использовать их офлайн или без регистрации аккаунта. Когда я спросил Гизе о возможной разработке опенсорсного пылесоса, он счёл эту идею нереалистичной в свете современного рынка. В текущих условиях, если вы хотите, чтобы ваш робот перестал за вами шпионить и относился к хозяину с уважением, придётся патчить его самостоятельно. И решить эту проблему можно лишь в одном месте — в телеграмм-канале, где обитает множество таких же своенравных, но дружелюбных нердов, которые отправят вам заветную печатную плату по почте.
Хакая своего робота, я вспомнил времена, когда компьютеры представляли собой более кастомизируемые устройства, а не запечатанные ящики.
После освобождения мой робот на радостях стал нарезать небольшие круги по дому, сканируя его, картируя и сохраняя все данные локально. Я назвал его Чаппи — в честь военного робота, который прекращает служить полицейским в захватывающем, но драматичном одноимённом фильме. Не могу выразить ту невероятную радость, которую я, подобно гордому родителю, ощутил при освобождении этого парняги. Ради интереса я, недолго думая, попросил его картировать зоны покрытия Wi-Fi сигнала, чтобы можно было внести доработки в имеющиеся точки доступа.
Скажу откровенно, я испытал истинное воодушевление и радость, когда закончил этот проект. Я будто снова окунулся в молодость, когда компьютеры были чем-то новым и очень интересным. Ещё до того, как всё превратилось в безвкусный отстой и планшеты, в высокомерные интерфейсы и бесконечные страницы нечитаемых и не вызывающих доверия соглашений об обслуживании. Это тот редкий момент, когда вы прикасаетесь к технике и знаете, что она, благодаря вашим усилиям, будет делать только то, что вы попросите. Теперь она стала для вас другом.
Я люблю моего маленького сосуночка, и очень счастлив, что он, наконец, свободен.
Узнавайте о новых акциях и промокодах первыми из нашего Telegram-канала ?