Яндекс полигон: Полигон — Технологии Яндекса

Как использовать «Полигоны» Яндекс.Аудиторий – настраиваем с умом

Если у вас локальный бизнес, вам может быть невыгодно таргетироваться на весь город или регион. «Полигоны» Яндекс.Аудиторий помогут настроить таргетинг на конкретную территорию и показывать рекламу только целевой аудитории.

В статье расскажем, что такое «Полигоны», как их настроить в Яндекс.Аудиториях и использовать созданные аудитории в кампаниях.

«Полигоны» Яндекса: что это, кому подходит

Как создать сегмент

Как добавить «Полигоны» в настройки кампании

Таргетинг

Корректировка ставок

Как использовать «Полигоны»

1. Исключите текущих клиентов

2. «Одолжите» аудиторию у конкурентов

3. Таргетинг на путешественников

4. Новые социальные характеристики

5. Оставьте сотрудников в покое

6. Ретаргетинг с билбордов

7. Решение для B2B

«Полигоны» Яндекса: что это, кому подходит

В Яндекс.Аудиториях на основе данных о геолокации можно создать сегмент аудитории двумя способами:

  1. Задать окружности. На карте указывается точка и добавляется радиус охвата (от 0,5 км 10 км). Или второй вариант — в строку поиска добавляются адреса, координаты или названия. Ограничение — не более 1000 местоположений.
  2. Настроить «Полигоны». На карту вручную добавляются минимум три точки. При соединении этих точек стороны фигуры не должны пересекаться.

Ограничения при настройке полигонов:

  • Максимальная площадь — до 10 кв. км.
  • 1 сегмент — до 10 полигонов.

Сегменты, настроенные с помощью «Полигонов», работают так же, как и другие пользовательские аудитории. По ним можно таргетировать рекламу, корректировать ставки и исключать сегменты из кампаний. Они пригодятся для:

  • локального малого бизнеса;
  • сетевых брендов;
  • оптимизации офлайн-конверсий;
  • поведенческой характеристики пользователей;
  • отсева нерелевантных показов.

О конкретных способах применения инструмента мы поговорим ниже.

Как создать сегмент

Откройте Яндекс. Аудитории и войдите в свой аккаунт. Нажмите «Создать сегмент» — «Геолокация».

Их двух типов геолокации выберите «Полигоны».

Назовите новый сегмент. Задайте на карте произвольную область в виде многоугольника.

Как это сделать:

  • Установите первую точку полигона. Для этого щелкните мышкой в любой области, которая определяет крайнюю точку полигона.
  • Определите на карте вторую точку и протяните к ней прямую.
  • Продолжайте устанавливать точки до тех пор, пока не охватите нужную зону. Помните, что стороны полигона не должны пересекаться.
  • Завершите создание полигона. Для этого кликните на любую точку области. В всплывающем меню выберите «Завершить».

Во время начертания полигона высвечивается текущая площадь полигона. Если она превышает 10 кв. км, то появляется предупреждение о превышении допустимой площади.

Отмеченные зоны перемещаются по карте перетаскиванием. В один сегмент их можно добавить не более десяти.

Укажите, какие люди из заданного местоположения попадут в новую аудиторию. На выбор два варианта:

1. Регулярное посещение. Включите в сегмент тех, кто регулярно посещает, живет или работает в отмеченной области. Так можно настроить таргетинг на людей, которые живут, например, в районе станции метро ВДНХ, Белорусского вокзала или ТЦ Метрополис.

2. Периодическое посещение. Задайте частоту, с которой пользователь должен бывать в выбранной зоне, чтобы попасть в сегмент. Например, так можно настроить показ рекламы на тех, кто два дня в неделю посещает Останкино, один раз в месяц бывает в парке Сокольники и т. д.

Нажмите «Создать сегмент». При необходимости добавьте таким же способом еще один или несколько сегментов. Если в одной из указанных зон бывает слишком мало людей, после обработки вы увидите предупреждение о нехватке данных.

Помните, что Яндекс не позволяет создавать больше 1 000 сегментов Аудиторий, если в рекламе из них используется менее 5%.

Как добавить «Полигоны» в настройки кампании

Таргетинг

На этапе создания группы объявлений в Яндекс. Директе раскройте блок «Ретаргетинг и подбор аудитории».

Нажмите «Добавить условие». В разделе «Набор правил» выберите «Сегмент Аудиторий» и найдите в выпадающем списке созданный сегмент.

Можно добавить несколько сегментов и указать принцип их объединения: выполнено хотя бы одно, выполнены все, не выполнено ни одного. Таких наборов правил в условии может быть до 50. Они будут объединены логическим оператором «И».

Присвойте новому условию название и нажмите «Сохранить».

Корректировка ставок

В настройках кампании можно повысить ставку для приоритетных полигонов и понизить для менее важных. Сделать это можно на этапе создания/редактирования в блоке настроек «Корректировки ставок» — «Целевая аудитория».

Если вы уже создали нужное условие подбора аудитории, то перейдите во вкладку «Новая корректировка» нажмите «Новая корректировка» и найдите его в списке.

Если нет, нажмите «Настройка условий». Откроется вкладка со списком условий ретаргетинга и аудиторий, в которой вы сможете по тому же принципу создать условие для корректировки ставок.

После этого вернитесь в окно настройки группы объявлений, где в списке аудиторий появится новый сегмент. Отметьте его флажком и выберите тип корректировки:

  1. Повышающая: до +1 200%
  2. Понижающая: до -100% (полное отключение показов)

Вы можете одновременно задать несколько корректировок, причем не только по локациям. Тогда они будут применяться к ставке последовательно.

Как использовать «Полигоны»

Почти неограниченные возможности создания полигонов и разные условия включения пользователей в сегмент открывают простор для креатива. Вот несколько примеров применения инструмента для вдохновения.

1. Исключите текущих клиентов

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

2. «Одолжите» аудиторию у конкурентов

Прием, популярный среди застройщиков. Отмечая в Яндекс.Аудиториях офисы продаж других жилых комплексов своего класса, они создают сегмент пользователей в стадии поиска квартиры. Это самая «горячая» аудитория, в рекламу на которую можно вкладывать немалые средства. Тактика подходит и для других отраслей и не относится к «серым».

Узнайте больше о «серых» стратегиях конкурентов в рекламе из нашей статьи «Стратегии конкурентов, которые вредят вашей рекламе в Яндексе/Google».

3. Таргетинг на путешественников

Работая с сегментами вокзалов и аэропортов разных городов, можно формировать аудитории, недоступные с помощью других настроек. Например, москвичи с частыми командировками в Санкт-Петербург или пассажиры самолетов Аэрофлота, отправляющиеся на Кипр. Так, туроператор может продвигать выгодные рейсы с пересадкой в определенном городе, если объединит сегменты аэропортов во всех нужных пунктах вылета и прилета.

4. Новые социальные характеристики

Иногда место, которое посещает человек, говорит больше, чем его онлайн-профиль. Возьмем для примера две аудитории: регулярные посетители яхт-клуба и люди, дважды побывавшие в роддоме за последний месяц. С большой долей вероятности первыми окажутся потребители премиум-сегмента, вторыми — родители детей в возрасте до 1 месяца.

5. Оставьте сотрудников в покое

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

6. Ретаргетинг с билбордов

При размещении цифровой наружной рекламы Яндекс автоматически собирает аудитории из людей, которые могли увидеть баннер. Однако настроить такой сегмент можно для любого билборда, даже классического. Нарисуйте полигон в зоне видимости щита и учитывайте всех пользователей, которые оказывались в нем 1-2 раза за последнюю неделю.

7. Решение для B2B

Таргетинг на выставочные центры и залы для конференций во время отраслевых мероприятий — отличный способ собрать аудиторию специалистов, имеющих мало общих характеристик. Не забудьте исключить людей, которые работают или бывают в этих зонах в другое время.

Используйте «Полигоны» правильно — и вы повысите эффективность рекламы.

Хотите увеличить доход от ведения контекстной и таргетированной рекламы? Регистрируйтесь в Click.ru, подключайте аккаунты своих клиентов к системе и получайте вознаграждение до 12% от их расходов на контекст и до 18% — на таргет.

Кроме того, вам будут доступны инструменты для автоматизации и оптимизации рекламы, большинство из которых — бесплатные.

Подключиться к Click.ru

Новый REST API Яндекс.Диска и Полигон. А также зачем Диску ещё один API и как мы его делали / Хабр

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

Например, при использовании нового API все приложения, которым просто нужно хранить свои файлы в Диске, смогут получать доступ только к своей папке, лежащей в Диске пользователя в папке «Приложения». В WebDAV API сервису для этого придётся получать у пользователя разрешение на запись/чтение всего Диска, а не только конкретной папки.

В этом посте я хочу рассказывать не о структуре или об операциях, которые умеет выполнять наш API — там всё довольно очевидно — а сразу перейду к интересным вещам: что такое Hypermedia и Machine-readable and Self-describing API, и как мы все это реализовали.

Hypermedia API


Мы снабдили наш API гиперссылками, которые связывают его ресурсы между собой. Они позволяют превратить работу клиента из дёрганья захардкоденных URL в перемещение по ссылкам, которые предоставляет API в теле возвращаемых объектов. Мы взяли за основу стандарт HAL, как один из наиболее простых и зрелых стандартов в этой области. В настоящее время HAL имеет драфт RFC-стандарта, и его уже можно встретить в API некоторых крупных компаний.

Благодаря поддержке HAL клиент понимает, что можно делать с каждым объектом, знает готовый или шаблонизированный в соответствии с RFC 6570 URL и HTTP-метод действия. В свою очередь, разработчики клиентских приложений могут писать меньше кода, тратя на это меньше времени, а этот код становится проще и легче для восприятия. Например, код, выполняющий базовые операции с папками в Диске, не использующий гиперссылки, будет выглядеть примерно так:

Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth токен>'}
connection = httplib.HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources'
def request(method, url, query=None):
    if query:
        qs = urllib. urlencode(query)
        url = '%s?%s' % (url, qs)
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        obj = request(obj['method'], obj['href'])
    return obj
if __name__ == '__main__':
    # создаём папку
    path = '/foo'
    folder = request('PUT', resource_url, {'path': path})
    # перемещаем папку и получаем перемещённую
    new_path = '/bar'
    folder = request('POST', '%s/move' % resource_url, {'path': new_path, 'from': path})
    # копируем папку и получаем новую папку
    copy_path = '/foobar'
    folder_copy = request('POST', '%s/copy' % resource_url, {'path': copy_path, 'from': new_path})
    # удаляем папки
    request('DELETE', resource_url, {'path': new_path})
    request('DELETE', resource_url, {'path': copy_path})


При использовании гиперссылок пропадает необходимость вручную собирать URL и беспокоиться о параметрах запроса и без того известных объекту, над которым выполняется операция:

Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth токен>', 'Accept': 'application/hal+json'}
connection = httplib. HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources?path={path}'
def request(method, url, params=None):
    url = uritemplate.expand(url, params or {})
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        status, obj = request(obj['method'], obj['href'])
    return status, obj
def do(resource, action, params=None):
    link = resource['_links'][action]
    _, obj = request(link['method'], link['href'], params)
    return obj
if __name__ == '__main__':
    # создаём папку
    _, folder = request('PUT', uritemplate.expand(resource_url, {'path': '/foo'}))
    # перемещаем папку и получаем перемещённую
    folder = do(folder, 'move', {'path': '/bar'})
    # копируем папку и получаем новую папку
    folder_copy = do(folder, 'copy', {'path': '/foobar'})
    # удаляем папки
    do(folder, 'delete')
    do(folder_copy, 'delete')
Machine-readable & Self-describing API


Кроме гипермедиа, мы решили сделать наш API самоописываемым и машиночитаемым. В процессе подготовки мы изучили различные стандарты описания REST API, такие как RAML, WADL, JSON Schema+JSON HyperSchema, IO Docs, Apiary Blueprints, однако окончательный выбор пал на Swagger. Одно из основных преимуществ Swagger заключается в том, что он развивается как стандарт (API Яндекс.Диска поддерживает версию спецификации 1.2, но сейчас уже ведётся разработка версии стандарта 2.0). Он описывает REST API с помощью JSON, достаточно прост для понимания и имеет неплохую экосистему инструментов для работы с описаниями API.

Swagger-документация охватывает все доступные в API ресурсы и методы их вызова. Для каждого метода ресурса есть описание принимаемых им параметров и структуры возвращаемых объектов.

Это описание можно использовать, как в качестве отправной точки для универсальных Swagger-клиентов, так и для автогенерации части кода нативных SDK для различных языков.

Полигон


Благодаря наличию Swagger-документации API мы запустили проект Полигон, который даёт разработчикам возможность, не написав ни строчки кода, отправлять боевые запросы в API. Кроме того, Полигон может служить примером универсального клиента для любого API, поддерживающего Swagger-описание. Наш разработчик Рома Акинфеев подготовил скринкаст, в котором рассказал немного о возможностях Полигона.

Больше приложений хороших и разных!


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

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

Мы старались сделать новый API Диска таким, чтобы вам было легко и приятно им пользоваться, меньше штудируя документацию и больше интуитивно осваивая его на практике. Поэтому без лишних слов предлагаем воспользоваться Полигоном и самостоятельно познакомиться с новым REST API Яндекс. Диска.

2.7.2. Правила использования внутренних полигонов

  1. 2.7.2.1. Когда использовать внутренние полигоны
  2. 2.7.2.2. Когда не использовать внутренние полигоны
  3. 2.7.2.3. Когда использовать комбинацию внутренних многоугольников и правильных многоугольников

Как простые, так и составные многоугольные элементы могут иметь внутренние многоугольники. Это полигоны, которые полностью расположены в границах другого «материнского» полигона и считаются частью этого большего полигона, а не отдельными элементами.

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

Например, вы должны использовать внутренний многоугольник, если вам нужно нарисовать двор (дворы входят в категорию Здание ; отдельного типа Двор в Редакторе карт Яндекса нет). Вы также можете использовать внутренний полигон, если вам нужно нарисовать поляну в лесу (поляна относится к 9Категория 0017 Woodlands , но на YME нет типа элемента Clearing ).

Если вам нужно нарисовать элемент внутри материнского полигона, который принадлежит к другой категории (т.е. не к категории внешнего полигона), то вы не должны использовать внутренний полигон.

Например, пруд в лесу не следует рисовать как отдельный Водоем полигональный объект. В противном случае вам придется рисовать водоем дважды: как внутренний полигон лесного предмета и как Водоем Гидрографический объект. Когда это происходит, границы двух многоугольников, представляющих один и тот же элемент, неизбежно не совпадают, поэтому он неправильно отображается на карте.

Внутренние полигоны следует использовать при рисовании:

1.1.

Courtyards в зданиях (в редакторе карт Yandex нет

0059

1. 2.

Поляны или тропинки в лесу (на YME нет Поляна или Дорожка ):

9 0056

1.3.

Если архипелаг находится в границах двух разных объектов гидрографии, то для него необходимо создавать внутренние полигоны в пределах обоих этих объектов.

Внутренние полигоны не должны использоваться при рисовании:

2.1.

Очертания водоемов, расположенных в лесных массивах (в категории Гидрография на ЮМЭ имеется объект Водоем ):

2.2.

Очертания лесных массивов, расположенных в пределах островных полигонов (существует пункт Islands в категории Terrain и Woodlands объект категории Vegetation на YME):

2.3.

Острова, расположенные в границах объектов гидрографии, входящих в группу озеро, водохранилище, водоем, пруд, болото, ледник, открытый бассейн, озеро группы (в Редакторе карт Яндекса есть объект Остров в составе Terrain категория):

2. 4.

Элементы ландшафта, расположенные на островах. Например, вулкан на острове можно нарисовать как отдельный элемент ландшафта, но его нельзя рисовать как внутренний полигон внутри элемента острова.

Если вам нужно нарисовать такой объект, как пруд, в пределах лесного массива (т.е. у вас есть ситуация, когда вы не можете использовать внутренний полигон), но он находится на поляне (т.е. внутренний многоугольник), затем нарисуйте элемент, используя комбинацию внутреннего многоугольника и правильного многоугольника.

Поляны в лесу рисуются внутренними полигонами внутри лесных массивов (зеленая пунктирная линия на рисунке), а водоемы в пределах полян рисуются отдельными полигонами (выделены на рисунке):

Связаться со службой поддержки

библиотека yandex_mapkit — Дарт API

Классы

AndroidЯндексКарта
Специальные настройки Android для ЯндексКарты.
BicycleResultWithSession
Объект, содержащий результат запроса построения маршрута и
сессионный объект для дальнейшей работы с вновь сделанным запросом
ВелосипедМаршрут
Маршрут вождения.
Маршрут состоит из нескольких участков
Каждый раздел имеет соответствующую аннотацию, описывающую действие в начале раздела.
ВелосипедСессия
ВелосипедСессияРезультат
Результат запроса на построение маршрутов
Если произошла какая-либо ошибка, то маршруты будут пустыми, иначе ошибка будет пустой
ВелосипедВес
Количественные характеристики любого участка маршрута.
BitmapDescriptor
Определяет растровое изображение.
Используется для предоставления объектов Bitmap из разных источников ввода.
Ограничительная рамка
Прямоугольная рамка вокруг объекта.
Положение камеры
Положение камеры.
КамераОбновление
Определяет движение камеры, поддерживая как абсолютные, так и относительные перемещения.
текущее положение.
Круг
Окружность вокруг указанной точки.
КругКартаОбъект
Круг для отображения на ЯндексКарте.
Кластер
Число меток, сгруппированных в одну метку, созданную для ClusterizedPlacemarkCollection.
Кластер
ClusterizedPlacemarkCollection
Коллекция PlacemarkMapObject для отображения на ЯндексКарте
Варианты вождения
Варианты тонкой настройки запроса на вождение.
ВождениеРезультатСессион
Объект, содержащий результат запроса построения маршрута и
сессионный объект для дальнейшей работы с вновь сделанным запросом
ВождениеМаршрут
Маршрут вождения.
Маршрут состоит из нескольких участков
Каждый раздел имеет соответствующую аннотацию, описывающую действие в начале раздела.
Метаданные раздела вождения
Информация о метаданных маршрута движения.
ВождениеСессия
Результат сеанса вождения
Результат запроса на построение маршрутов
Если произошла какая-либо ошибка, то маршруты будут пустыми, иначе ошибка будет пустой
ВождениеВес
Количественные характеристики любого участка маршрута.
Геометрия
Геометрическое изображение объекта на карте
ГеоОбъект
Гео объект.
Может отображаться в виде метки, полилинии, многоугольника и т. д. в зависимости от типа геометрии.
GeoObjectSelectionMetadata
Метаданные геообъекта, необходимые для выбора объекта
Линейное кольцо
Последовательность из четырех или более вершин, все точки которой расположены вдоль
линейно-интерполированные кривые (линейные сегменты) между каждой парой
последовательные вершины. Кольцо должно иметь 0, 4 или более очков.
Первая и последняя точки кольца должны быть в одном положении.
Кольцо не должно пересекаться само с собой.
локализованное значение
Значение, соответствующее языковому стандарту устройства.
Выравнивание карты
Выравнивание логотипа карты.
КартаАнимация
Анимация, которая используется для переключения между состояниями.
MapObject< T>
Общий интерфейс для типов карт.
MapObjectCollection
Коллекция MapObject для отображения на ЯндексКарте
Все mapObjects должны быть уникальными, т. е. каждый MapObject.mapId должен быть уникальным.
MapObjectId
Уникально идентифицирует объект среди всех MapObjectCollection.mapObjects определенного типа.
MapObjectUpdates< T расширяет MapObject>
Обновление спецификации для набора объектов.
Мапрект
Прямоугольник для отображения на карте.
Мультиполигон
Область, состоящая из нескольких внешних полигонов
МеткаСоставнойЗначокЭлемент
Часть составного значка для визуального отображения значка PlacemarkMapObject.
МеткаЗначок
Визуальная иконка одного объекта PlacemarkMapObject
МеткаЗначокСтиль
Визуальный значок значка, который будет использоваться для визуального отображения объекта PlacemarkMapObject.
МеткаКартаОбъект
Метка для отображения на ЯндексКарте в определенной точке
Точка
Точка с указанными координатами.
Полигон
Полигон с одним или несколькими полигонами внутри.
Внешняя и внутренняя области задаются с помощью LinearRing.
PolygonMapObject
Полигон для отображения на ЯндексКарте
Полилиния
Ломаная линия между несколькими точками.
Ломаная линия рисуется между последовательными точками.
PolylineMapObject
Набор точек, соединенных линиями, для отображения на ЯндексКарте
Рекестпоинт
Точка для запроса построения маршрута
СкринПоинт
Точка на экране устройства.
ScreenRect
Прямоугольник на экране устройства.
ПоискАдрес
Адрес структурированного топонима
SearchItem
Найденный геообъект
SearchItemBusinessMetadata
Расширенная информация о компании.
SearchItemТопонимМетаданные
Дополнительные данные по объектам топонимов.
Параметры поиска
Варианты тонкой настройки поискового запроса.
SearchResultWithSession
Объект, содержащий результат поискового запроса и
сессионный объект для дальнейшей работы с вновь сделанным запросом
Сеанс поиска
Определяет запущенный поисковый запрос
SearchSessionResult
Результат поискового запроса
Если возникли какие-либо ошибки, то элементы, найденные, страница будет пустой, в противном случае ошибка будет пустой.
ПредложитьЭлемент
Один предлагаемый элемент.
SuggestOptions
Варианты тонкой настройки запроса предложения.
Предложить результат с сеансом
Объект, содержащий результат запроса предложения и
сессионный объект для дальнейшей работы с вновь сделанным запросом
Предложить сеанс
Определяет запущенный запрос предложения
SuggestSessionResult
Результат запроса предложения
Если произошла какая-либо ошибка, элементы будут пустыми, иначе ошибка будет пустой.
Уровень трафика
Уровень трафика.
UserLocationAnchor
Определяет точки привязки для слоя местоположения пользователя.
UserLocationView
Интерфейс, используемый для указания внешнего вида элементов значка местоположения пользователя.
Видимый регион
Определяет видимую область.
ЯндексВелосипед
Интерфейс для велосипедного роутера.
ЯндексЗа рулем
Интерфейс для управляющего роутера.
ЯндексКарта
Виджет, отображающий карту с помощью сервиса Яндекс карт.
ЯндексКартаКонтроллер
ЯндексПоиск
Основной интерфейс для поиска.
ЯндексПредложить
Интерфейс для текстовых предложений.

Удлинители

RequestPointTypeExtension
SearchTypeExtension
SuggestTypeExtension

перечисления

ВелосипедТранспортТип
КамераОбновлениеПричина
Горизонтальное выравнивание
Горизонтальное выравнивание логотипа.

This entry was posted in Популярное