Android home app source

Погружаемся в opensource-экосистему Android

Каждый выбирает свой «уровень погружения». Вам не обязательно следовать каждому пункту из этого поста. Моя цель — показать, насколько хорошо развита экосистема на данный момент и чего вы можете и не можете от неё получить. Делайте выводы самостоятельно. Хотите — меняйте прошивку полностью и переходите на microg. Хотите — просто поставьте на свой телефон f-droid прямо рядом с gplay. Хотите — не делайте ничего.

Давайте поговорим об экосистеме приложений свободных приложений с открытым исходным кодом на Android. Попробуем установить MicroG — свободную реализацию сервисов Google на Android. Посмотрим, как и зачем со всем этим жить.

Несколько причин, почему стоит об этом задуматься

Google Play далеко «не торт»

Далеко ходить не нужно, в соседних постах можно найти множество примеров того, как разработчиков выгоняют из Google Play по тем или иным причинам, заставляя общаться с ботами без возможности реальной аппеляции. Некоторые типы приложений теперь принципиально невозможно распространять (например, блокировщики рекламы, да и в принципе приложения обхода любых ограничений).

Мне, как параноику, не нравится, что у стороннего лица появляется практически полный доступ к моему устройству. Google способен как минимум удалить с моего телефона любое приложение в любой момент и собрать с него произвольные данные. Более того, google play service — это огромное (стандартная поставка — 600Мб, минимальная — 95Мб) количество постоянно обновляющегося кода, часть которая работает с системными привилегиями. Для сравнения, дистрибутив MicroG может весить всего 4Мб.

Низкое качество приложений в google play, засилие рекламы, телеметрий, шпионских модулей, уязвимостей

Я, конечно, и раньше был не очень высокого мнения о среднестатистическом приложении для андроида, но был серьёзно удивлен своим новым телефоном одного китайского производителя. После покупки, мне пришлось три дня ходить со стоковой прошивкой из-за ограничений разблокировки (вот она — еще одна причина не доверять свои устройства компаниям). Я честно не понимаю, почему этим пользуются и почему это любят. Мне постоянно (несколько раз в час) приходили непонятные уведомления (дайте разрешение, обновите меня, реклама). Что-то постоянно обновлялось. Стоковый браузер в один момент просто перестал работать.

Энергопотребление

Исходит из предыдущего тезиса. Если приложения не загружают рекламу, не отправляют статистику и не следят за вами, они потребляют меньше электроэнергии. Это же касается gapps: зачастую, они являются главным потребителем электроэнергии. Да, Google в последнее время серьёзно работает над энергопотреблением. Однако, во-первых, не у всех есть возможность использовать актуальные версии Android. Во-вторых, даже в этих условиях замена gapps на более простое и минималистичное решение позволит вам еще сильнее продлить жизнь от батарейки.

Вторая жизнь старым устройствам без большого количества ОЗУ и/или места на диске?

Тоже логичное продолжение предыдущих моментов. Случалось ли с вами такое, что на бюджетном устройстве после очередного обновления gapps вообще не остается места ни на приложения, ни на пользовательские данные? Даже если на вашем не очень свежем устройстве еще достаточно свободных ресурсов, избавление от gapps позволит освежить его.

Несколько подводных камней, с которыми ничего не сделать

Немного матчасти

Google Play Services, gapps, Google Play. Включают в себя как базовые сервисы, необходимые для работы push-уведомлений, геолокации, синхронизации различных данных с Google так и остальной пользовательский софт, использующий всё это (например, Gmail).

Тип уведомлений, работающий через сторонний сервер. Позволяет значительно экономить батарейку, т.к. устройство может полностью заснуть и просыпаться через небольшие промежутки времени, проверяя только одно сетевое соединение на наличие новых событий.

По умолчанию, устройства на Android идут с заблокированным загрузчиком. Обычно, требуется произвести эту процедуру, чтобы иметь возможность устанавливать любые другие прошивки. Разблокировка загрузчика обычно не только даёт возможность модифицировать системные разделы, но и отключает проверку подписи ядра при загрузке.

Права суперпользователя. Точно так же, по умолчанию обычно их нет и необходимо их получать тем или иным способом. Либо установкой прошивки (для lineageos есть addon-su), либо magisk. Обычно в инструкциях предлагают ставить проприетарный и купленный китайцами SuperSU (мы их слушать не будем и поставим опенсорсный magisk). В особо тяжелых случаях иногда приходится использовать эксплоиты (вроде KingRoot).

Позволяет устанавливать прошивки и их модификации в виде zip-архивов. Обычно это TWRP, тоже проект с открытым исходным кодом.

Помимо предоставления root, имеет встроенный модуль для скрытия этого самого root от некоторых приложений (полезно для банк-клиентов) и большое множество сторонних модулей. В контексте этого поста для нас будет самым полезным модуль для установки Xposed.

Если Magisk предоставляет модули для модификации базовой системы, то xposed предоставляет модули для модификации и патчинга на лету самого Android. В контексте этого поста будет полезным модуль FakeGapps. Рекомендую ставить его через Magisk, и для конкретной API-версии (соответствующей вашей версии android). К сожалению, обычно поддержка прошивок отстает на одну версию android.

Каталог открытого ПО для Android. Можно использовать как официальный репозиторий, так и сторонние.

Флагман среди opensource-прошивок. Бывший Cyanogenmod.

На каких устройствах это будет работать?

Условно все устройства можно поделить на следующие классы (в порядке убывания удобности):

  • Устройства с официальной поддержкой lineageos. Наличие официального порта обычно является не только гарантией более-менее нормальной работы, но и наличия множества других прошивок под это устройство. Естественно, лучше проверять информацию (и о наличии прошивок, и о возможных сюрпризах) на 4pda/xda до покупки. К сожалению, совсем новых устройств вы там обычно не увидите.
  • Устройства с неофициальными портами lineageos/других прошивок. Обычно, немного хуже, но жить все равно можно.
  • Устройства без сторонних прошивок, но с root. Сложнее избавляться от bloatware и gapps (однако, с NanoDroid это теперь можно делать в автоматическом режиме). Никаких гарантий, что вы удалили все вредоносные приложения от производителя.

При выборе устройства так же нужно смотреть на:

  • Собственно покрытие прошивками. Хорошее коммьюнити вокруг телефона обычно дает более крепкие гарантии на обновление прошивки, чем типичный производитель.
  • Некоторые производители ограничивают возможность разблокировки загрузчика.
    • Например, у xiaomi присутствует задержка от нескольких дней до недель от привязки телефона к аккаунту до первой разблокировки.
    • Huawei недавно в принципе перестала выдавать коды разблокировки (особо не разбирался, как минимум для нескольких устройств). Фу на них, но за несколько долларов до сих пор можно купить код разблокировки на стороне.

MicroG

MicroG — открытая реализация gapps. Обеспечивает работу push-уведомлений, api геолокации в использующих это приложениях. Список поддерживаемых api.

Для работы требуется функциональность подделки подписи в прошивке. Способы установки, примерно соответствующие градации устройств выше:

Читайте также:  Изменить курсор мыши для андроид

Можно установить LineageOS for MicroG и получить практически все перечисленное практически из коробки. Самый простой и удобный способ из всех, рекомендую использовать именно его, если ваше устройство есть в списке поддерживаемых.

Можно установить MicroG вручную на любую прошивку, не идущую в комплекте с gapps (почти любая не стоковая прошивка). Однако, в прошивке требуется поддержка подмены подписей (Signature Spoofing).

  • Смотрите инструкции. В довольно большом списке прошивок эта функциональность есть из коробки, достаточно только поставить сверху MicroG.
  • Остальные прошивки придется тем или иным способом патчить.
    • Самый удобный способ — модуль для XPosed FakeGapps. Не требует модификации самой системы.
    • Способы с модификацией системы. Не рекомендую, т.к. у меня это приводило к проблемам с производительности, но не могу сказать, правило это или исключение. Необходимо повторять после каждого обновления.
      • Способы патчинга на самом телефоне (nanodroid-patcher) занимают достаточно много времени (перекомпиляция достаточно жирного системного файла), но являются вторыми по удобству. У меня это приводило к проблемам с производительности, не рекомендую.
      • Способы патчинга с участием компьютера. Еще менее удобны, но при этом быстры, т.к. пересборка происходит на ПК. Требуют подключения телефона к ПК.

Не планировал описывать полную инструкцию, но опыт предыдущего поста показывает, что придется.

Процесс установки зависит от способа. Про установку при помощи NanoDroid чуть ниже, здесь описана ручная процедура:

  • Удалить gapps, если они есть. Например, при помощи приложения /d/gapps
  • Установить собственно необходимые apk. Из репозитория microg или NanoLx.
    • GmsCore.apk («MicroG Services core» из репозитория). На Android 7 и выше это приложение нужно сделать системным (при помощи приложения или модуля magisk systemize), если вы хотите пользоваться бекендами поиска местоположения.
    • GmsProxy.apk («MicroG Services Framework proxy» из репозитория)
    • Одну из реализаций PlayStore (это обязательно)
      • Приложение-заглушку FakeStore. Заглушке в настройках необходимо дать доступ на подделку подписей. В последний раз у меня с этим возникли какие-то проблемы, поэтому можно сделать adb shell pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE с ПК или просто pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE с телефона.
      • Переподписанный Google Play Store. Да, это возможно! Но такой apk предоставляет только репозиторий NanoLX.
    • Бекенды местоположения, если нужно. Например, MozillaNlpBackend. Позволяет телефону быстро определять своё местонахождение без GPS.

После установки и перезагрузки, необходимо зайти в настройки microg и пройтись по чеклисту, дать все необходимые разрешения. Мне на Android 9 понадобилось набрать *#*#2432546#*#* , без этого регистрация пуш-уведомлений не производилась. Тестировать работу можно при помощи Push notifications tester.

NanoLX NanoDroid

Пожалуй, самый простой и удобный способ установить MicroG. Помимо основных возможностей (удаление gapps и установка microg) имеет несколько приятных фич:

  • Удаление стандартных приложений и замена их на opensource-аналоги. Удобно, когда у вас телефон на условном MTK с сильно замусоренной стоковой прошивкой.
  • Установка Fdroid, YalpStore/AuroraStore с системными правами
  • Возможная установка патченного Google Play, совместимого с microG.

Достаточно установить несколько из следующих файлов:

  • NanoDroid: основной установщик. Устанавливает всё.
  • NanoDroid-setupwizard: графическая настройка основного установщика. Позволяет выбрать, какие компоненты будут установлены и какие действия будут совершены. Работает только на устройствах с arm/arm64.
  • NanoDroid-BromiteWebView: заменяет системный WebView на BromiteWebView со встроенной блокировкой рекламы.
  • NanoDroid-OsmAnd: устанавливает OsmAnd+.
  • NanoDroid-microg: устанавливает только microG.
  • NanoDroid-fdroid: устанавливает только FDroid и расширение, позволяющее устанавливать и обновлять приложения в фоновом режиме.
  • NanoDroid-patcher: включает поддержку Signature Spoofing (см выше).
  • NanoDroid-uninstaller: удаление ранее установленного.

Установка приложений из google play

Как было отмечено выше, есть несколько способов решения проблемы.

  • Можно установить патченную версию оригинального Google Play и жить, как обычно. Должно работать всё, включая микроплатежи в приложениях.
  • Aurora Store. Прекрасное, красивое, быстрое приложение. Может многое (из основного нужного — установка, обновление бесплатных приложений). Пока в бете и имеет некоторые проблемы со скачиванием через анонимный аккаунт (используйте свой неанонимный или пока обойтесь Yalp Store, это практически то же самое, но без красивого интерфейса и с еще более скромными системными требованиями (до сих пор поддерживается Android 2+)
  • PlayMaker позволяет на вашем сервере развернуть f-droid репозиторий с нужными вам приложениями из google play. Управление скачиваемыми приложениями производится через веб-интерфейс. Имеет очевидные ограничения, но очень удобен, если вы нечасто устанавливаете новые приложения и нуждаетесь лишь в способе их удобного обновления.
  • 4pda app&game: Безумное приложение, однако, предоставляющее быстрый доступ к обновлению ваших приложений. Может быть полезным тем, что на 4pda обычно выкладывают не только оригинальные версии, но и модифицированные (например, с удаленной рекламой). Лично я не одобряю, но знаю, что этим пользуются.
  • APKPure Сторонний сервис-зеркало Google Play. Не был замечен за перепаковкой приложений (подписи совпадают с оригинальными), но нет никаких гарантий, что так будет продолжаться и дальше.

Очень небольшой начальный набор из качественных opensource-приложений

Update: только что появился пост с более широким обзором приложений.

Вместо выводов

Лично мне переход на MicroG, F-Droid и AuroraStore дал тот Android, о котором я всегда мечтал. С удобными приложениями, не напичканными рекламой и телеметрией, позволяющие мне не делиться своими данными с Google, но при этом работающими push-уведомлениями, позволили перестать мечтать о недостижимом (смене мобильной ОС на Sailfish/ubuntu phone/etc, где все бы равно для полноценной работы приходится использовать слой для поддержки Android-приложений) и начать жить.

Надеюсь, эта инструкция поможет вам понять, нужно ли вам это в принципе и успешно повторить этот результат.

Источник

20 Great Open Source Apps for Android

Android comes in many shapes and sizes and almost every vendor or smartphone manufacturer has its unique take on the operating system. What gives them the liberty to customize Android is the fact that Android is an open-source platform. This list goes beyond the Android variants designed by brands and also includes the multiple different strains developed by independent developers in the form of custom Android ROMs. And just like the numerous variations of Android, there is a variety of open source Android apps that are very purposeful although they might have not received the kind of attention they deserve.

Moreover, if you’re a developer yourself and want to improve your coding skills, you can use the code from these apps as a reference to develop your own apps or add features to those apps without having to write the code from scratch. For consumers, open source Android apps bring ad-free experience for free. I love open source Android apps and have been using them since the start. Here are some of my favorite open source Android apps that you can use in 2020.

Amazing Open Source Android Apps in 2020

1. SoundSpice

Let’s start this article with one of my favorites and best-designed open-source Android apps. SoundSpice is an offline music player app that conforms to modern design language. The app’s UI is both functional and useful. It’s also a light-weight app that makes it excellent even for older Android devices. The app is 100% free to use and even brings modern UI features such as dark mode. One of my favorite features of this app is the real-time lyrics look-up. It allows me to quickly get song lyrics with a tap. If you are not using online music streaming services and still listen to your offline music collection, you should try this app.

2. QKSMS

Another beautiful and useful open-source Android application that I install instantly on a new Android device is QKSMS. It’s a third-party texting client for normal messages. My favorite feature of this app is the ability to customize the look and feel of the app. The app supports dual and multi-SIM devices so you have no problems there. It also supports normal MMS protocol allowing you to share media files like photos and audio files. One outstanding feature of this app is the ability to create group messages. Overall, I quite like this app and always prefer it over the built-in messaging app.

Читайте также:  Ускоритель процессора для андроида

3. FairEmail

If you are looking for a privacy-friendly open-source email app for your Android device, look no farther than FairEmail. It brings all the modern email features including support for unlimited accounts and unlimited email addresses, unified inbox, conversation threading, two-way synchronization, and more. It’s also very small (>12MB) and is very light on resources. Finally, I love that it supports the material design language and dark mode. Gone are the days when open-source email clients were ugly and hard-to-use. FairEmail brings a modern email experience to your Android device.

4. Lawnchair 2

I love the Pixel launcher that comes with Google Pixel phones. I wish all the Android smartphone launchers, whether it be from Samsung or Xiaomi, followed the same minimal design language. Well, since that’s not the case, we have to use third-party launchers and if you want minimalism with great performance, there’s none better than Lawnchair launcher. It brings the Pixel design language with all the features including adaptive icons, drawer categories, automatic dark mode, notification dots, and more. And since it’s open-source, it’s free to use without any ads. It is worth checking out.

5. Keepass2

It’s 2020 and you should be using a password manager to generate, use, and store secure passwords across all your accounts. But if for skeptical of third-party password managers that use their propriety code, you should check out Keepass2. Keepass2 is an open-source password manager for your Android device. It stores all your passwords in a securely encrypted vault. It supports biometric authentication so you won’t have to enter your master password every time you log in. And it lets you synchronize your vault using the cloud or your server (Dropbox, Google Drive, SFTP, WebDAV, and many more). If you don’t trust online storage solutions, you can always keep your password offline. It’s the open-source Android app that every user should use.

6. VLC Media Player

VLC is a renowned media player which brings support for a wide range of audio and video codecs. Besides playing local media files, VLC can be used to stream videos, audios, and other types of files over a local network or an internet directory. Some common features that enhance media playback include the ability to change playback speed, jump to a specific time, add and pan subtitles, set a sleep timer. Apart from this, users can enjoy videos in picture-in-picture mode and even tune the audio playback using the inbuilt equalizer.

7. A2DP Volume

A2DP Volume, also known as Android Bluetooth Volume Manager, is used to store data about your volume preferences per individual Bluetooth device so that you do not have to manually adjust the volume every time a new device is connected. You can also use an option to read incoming notifications or set a timer to delay this if you don’t want the notifications to be read out loud when you’re using your smartphone. Additionally, the app also offers you the feature to capture the GPS location every time a Bluetooth device is disconnected and the developer insists that you can use it as a car locator if you have a Bluetooth enabled stereo system. This is one of the lesser known open source Android apps that I use on a daily basis.

8. Amaze File Manager

Amaze File Manager is an easy-to-use and resourceful file manager which stands out in the long list of file managers due to its minimal material design interface. Besides a clean interface, Amaze File Manager’s fast animations, as well as the ability to choose from among different themes and even select colors for elements individually, are what make it more interesting. Besides engaging aesthetics, the file manager amazes (yes, the cringe-worthy pun was intended) you with the ability to backup installed apps in form of APK files and even restore them after a fresh install. Additionally, you can use the inbuilt FTP option or utilize a score of cloud transfer protocols like SMB, SCP, SFTP, or even install other plugins to extend the utility.

9. AntennaPod

If you love podcasts, you might be aware of common podcast apps like iHeartRadio, Google Podcasts, and obviously Apple Podcasts/iTunes. Well, AntennaPod is an open-source podcast player that lets you subscribe to a wide range of podcast sources. You can also manually enter the URL and start streaming or downloading your favorite podcasts. AntennaPod is easily one of the most useful open source apps for Android. The app gives you the ability to fine-tune the speed of playback, vary volume between left and right channels, convert a stereo output to mono. Additionally, you can also set a sleep timer with the flexibility to set an alarm at the end of the timer, if you want to limit the time you spend listening to podcasts.

10. Kodi

Kodi is a cross-platform and open source media player which offers you nearly infinite options to stream movies, music, TV shows, and even live TV. You can add a multitude of add-ons and Kodi repositories that help you download or stream content or manage your library. Besides the ability to watch content from a very large number of sources, you can also play retro games on Kodi, and even theme the media player to suit your mood and preferences. Besides Android, Kodi can also be installed on Windows, Mac, Linux, iOS, and a variety of TV boxes and streaming sticks for absolutely free.

11. Signal Messenger

Signal is an open source messaging platform which comes with end-to-end encryption. The app has long been standing as the flagbearer for encrypted and protected conversations and popular messengers like WhatsApp and Facebook Messenger use Signal’s cryptographic protocol for ensuring the secrecy of the messages sent and received by you. The messaging interface is very simple and convenient to use and there’s an inbuilt dark mode. Lastly, in terms of privacy, there are many options including an auto-lock timer, the option to use the keyboard in incognito mode, restricting screenshots, and enabling or disabling backup – among other options.

12. Orbot

Orbot is an open source proxy resolving app for Android which is based on the concept of Tor (The Onion Router). It helps conceal your identity online and fight the forces which aim to curb your online freedom by routing the internet traffic through more than 7,000 layers. You may experience a slowdown in the network speeds after switching Orbot on but your identity will be fully secure. Additionally, you can selectively choose which apps use the network while which ones work with Orbot to bypass geo-restrictions on certain content.

Читайте также:  Ugoos am3 android tv прошивка

13. NewPipe

NewPipe is an open source Android app that lets you browse and play YouTube videos without forcing you to sign into your Google account. While you can simply browse the trending content, you can also import your subscriptions from YouTube and SoundCloud, and load them onto NewPipe – without being tracked by Google. You can also export and share these subscriptions with your friends. The videos are open in a new window and the player gets the gestures for brightness and volume. Using NewPipe, you can also download videos, play them in the background, as well as in a pop-up window. This is one of my most favorite open source Android apps.

14. Frost for Facebook

Facebook, in spite of the rising skepticism from users since the Cambridge Analytica case last year, has been the most popular social media, especially because of the vastness of options and features. However, the Facebook app for Android is among the most data-hungry and resource-seeking apps, often resulting in a jittery experience on mid-range or entry-level smartphones. Frost for Facebook is a lightweight and open-source app which loads your Facebook feed faster than the official app without compromising on any feature. On the other hand, it adds features like comprehensive options for theming the interface, as well the option to add multiple accounts at once. Frost also allows you to play stories in PiP and even reply to messages without installing a separate Messenger app. Frost for Facebook can be a good alternative if you’ve been stuck between using Facebook Lite and the mobile site.

15. NetGuard

There are many apps that run in the background and use the internet without your information. Whether it is to restrict these certain apps from sending your data to their servers or to conserve on limited internet quota, you can use NetGuard, making it one of the most useful open source apps for Android. NetGuard is a firewall application that lets you block internet access to certain apps. It features a simple interface with icons for Wi-Fi and mobile internet next to each app and you simply enable or disable internet access per app by simply tapping on these icons. Additionally, you can also choose specific instances such as screen lock, roaming, or screen on/off state to apply these settings if you wish to fine-tune the controls.

16. Etar

Etar is a lightweight and open source calendar app for Android which shows events in daily, weekly, monthly, and agenda-wise layouts. The interface uses material design elements and lets you choose between light, dark, and fully black themes, as well as gives you the option to customize accent colors. Besides this, Etar syncs all the events you add with Google Calendar or Microsoft Exchange accounts. Further, you can choose to set an event to private so that its contents are not visible on the main screen and with the Google Calendar integration, you can also invite other members to a specific event.

17. Pixel Dungeon

Pixel Dungeon is a challenging and addictive game falls under the umbrella of open source apps for Android. With pixel-art graphics and intuitive gameplay, Pixel Dungeon is an RPG game about fighting mega rats, bats, and evidently some monsters. On the way, you’ve to grab something to eat and some useful items like keys to open doors as well as weapons like swords to fight monsters on your course. The game engages your curiosity and can be a great time and boredom buster.

Pixel Dungeon is possibly one of the most replicated open source apps for Android and one can easily find several forks on the Google Play Store, each of which offers an experience different from the original game.

18. Timber Music Player

Timber is an open-source and flexible music player which lets you customize your music-listening experience to a great extent. While you get the basic customization features like changing the theme or the accent colors, there is also an option to choose among four different interfaces for the “Now Playing” window. Besides this, the player can automatically fetch lyrics as well the album art for a track while it also features support for LastFM scrobbler. Timber also creates playlists based on the tracks you recently add to your device or listen to the most. Lastly, you can also choose which one of the three – Songs, Albums, or Artists – is displayed as the start page.

19. Omni Notes

If you though Google Keep was the most versatile note-taking app, Omni Notes might just prove you wrong. The app comes uses a material design interface and gives you the flexibility to perform actions like adding a reminder, archiving, deleting in a batch as well as to merge the selected notes together. Besides this, you can sort notes on the basis of date of creation, last modification, or the date for reminders. You can also set a password to protect the notes, as well as backup and restore these notes either locally or from your Springpad account.

20. Slide for Reddit

As evident from the name, Slide is a Reddit client which is also an open source application available on Android. The first thing Slide asks you at the beginning is to adjust the main interface and accent colors as well as the background color. The navigation within the app relies a lot on swipe (or slide) gestures making it more interactive than the Reddit app. It not only loads faster than the official one but also has more sorting options for sub-reddits and comments. You can browse Reddit without signing in as well as search a particular user from a dedicated “Go to Profile” option in the hamburger menu. Furthermore, the comments hierarchy is coordinated by color which may be too overwhelming initially but adds a sense of fun to the serious and somewhat intimidating demeanor. But the best part about Slide keeps your Reddit feed free from any advertisement.

Great Open Source Android Apps You Must Try

Open source Android apps not only provide a great chance of embracing and learning about technology, but it can also please the geek in you who might enjoy DIY solutions. Open source protocols inspire the community to actually not develop for financial reward but for the passion of developing and the foresight for a brighter technologically-advanced future. So whether it for the purpose of learning, or taking a break from the vicious ads network tracking your internet usage throughout, you can rely on open source Android apps to help you. Do you think we can include some other open source apps for Android in this list? Let us know in the comments below.

Источник

Оцените статью