# Мерчант whitebit

## Поддерживаемые валюты

* Банковские карты: EUR, USD, KTZ, UAH (*временно недоступно*)
* Криптовалюты: BTC, ETH, LTC, USDT...

## Установка мерчанта

Используя параметры ниже, установите мерчант через функционал "**Install plugin**" по инструкции [install-plugin](https://manual.boxexchanger.net/dopolnitelnye-sistemy/install-plugin "mention").

<details>

<summary>Параметры для Install Plugin</summary>

**Plugin type**: <mark style="color:orange;">**`Merchant module`**</mark>

**Plugin URL**: <mark style="color:orange;">**`@boxexchanger-plugins/merchant-whitebit`**</mark>

**Directory path**: <mark style="color:orange;">**`whitebit`**</mark>

**Auth: (Deploy token)**: оставляем пустым

**Package tag**: <mark style="color:orange;">**`latest`**</mark>

</details>

## Регистрация и подготовка аккаунта whitebit

{% hint style="success" %}

* [Зарегистрируйтесь](https://whitebit.com/referral/27d3a06d-9f07-4753-a1e0-257c9817b26e) на бирже whitebit - пройдите верификацию личности - включите 2FA.&#x20;
* Обратитесь в поддержку whitebit. В сообщении укажите:\
  \- Username вашего аккаунта\
  \- Запрос на **активацию генерации адресов для депозита** для работы онлайн обменного сервиса (*ссылка на ваш обменный сервис*) на движке BoxExchanger.&#x20;
  {% endhint %}

### Создание API ключа на прием на whitebit

{% hint style="warning" %}
Убедитесь, что у вас включена 2FA для аккаунта whitebit. В противном случае вы не сможете создать API ключ.
{% endhint %}

1. Перейдите в **настройки аккаунта** - раздел "**API**" - **ключи API** - нажмите "**Редактировать**" в блоке "**Ключи API"** (либо [**нажмите тут**](https://whitebit.com/ru/settings/api/api-keys) для быстрого перехода к данной странице) **-** далее **"**[**Сгенерировать ключ API**](#user-content-fn-1)[^1]**" -** введите 2FA.
2. [**Скопируйте** ](#user-content-fn-2)[^2]**в надежное место** **Ключ (публичный)** и **Секретный ключ** (данные понадобятся для [настройки модуля](#osnovnye-nastroiki) в админ панели).
3. Введите имя ключа - активируйте эндпоинты (см. список ниже) - нажмите "[**Подтвердить**](#user-content-fn-3)[^3]" - введите 2FA.&#x20;

<details>

<summary>Эндпоинты для мерчанта</summary>

Раздел "**Пополнить**"\
`/api/v4/main-account/fiat-deposit-url`\
`/api/v4/main-account/create-new-address`

Раздел "**Перевод между балансами**"\
`/api/v4/main-account/transfer`

Раздел "**Баланс и история кошелька**"\
`/api/v4/main-account/balance`\
`/api/v4/main-account/history`

Раздел "**Торговый баланс и история ордеров**"\
`/api/v4/trade-account/balance`

Раздел "**Управление ордерами**"\
`/api/v4/order/new`\
`/api/v4/order/market`

</details>

4. На странице "[**Ключи API**](https://whitebit.com/ru/settings/api/api-keys)" нажмите "[**IP-доступ**](#user-content-fn-4)[^4]" - далее переведите ползунок в активное положение - введите IP-адрес v4 (также IPv6, если есть. IPv6 может быть не доступен тогда его можно пропустить и вставить только IPv4) back-end сервера - нажмите "[**Добавить**](#user-content-fn-5)[^5]" - введите 2FA.

{% hint style="info" %}
IP-адрес формате v4 и v6 можно узнать&#x20;

1. В **админ панеле** на странице настроек мерчанта whitebit. Для этого перейдите на страницу "**Мерчант и API**" - раздел "**MERCHANT SYSTEM**" - настройки ([**значок настроек**](#user-content-fn-6)[^6]) в блоке с мерчантом "**WhiteBit Exchanger**" - внизу страницы "[**PUBLIC IP**](#user-content-fn-7)[^7]" и "**PUBLIC IPV6**".&#x20;
2. В ЛК [лицензий](https://licence.boxexchanger.net/ru/licenses/) - поле "**Back-end server**".&#x20;
   {% endhint %}

{% hint style="danger" %}
Обратите внимание, что ваш ключ API будет автоматически деактивирован со стороны whitebit в случае отсутствия активности API в течение 14 дней. Его можно будет активировать повторно на странице "**Ключи API**".
{% endhint %}

## Конфигурация мерчанта в админ панели

### Основные настройки

1. В админ панели перейдите на страницу настроек мерчанта whitebit. Для этого перейдите на страницу "**Мерчант и API**" - раздел "**MERCHANT SYSTEM**" - настройки ([**значок настроек**](#user-content-fn-6)[^6]) в блоке с мерчантом "**WhiteBit Exchanger**".&#x20;
2. В поле "**API Secret**" вставьте ранее скопированный **Секретный ключ** - нажмите "[**Save**](#user-content-fn-8)[^8]". *(после перезагрузки страницы **API Secret** будет скрыт и перестанет отображаться в админ панели в целях безопасности).*
3. В поле "**API Key**" вставьте ранее скопированный **Ключ (публичный) -** нажмите "[**Save**](#user-content-fn-9)[^9]".
4. Вы можете включить **отображение QR-кода** с адресом для депозита. \
   Для этого в поле "**Payment with QR-code?**" выставьте значение "Ye&#x73;**"** - нажмите "[**Save**](#user-content-fn-10)[^10]".
5. Вы можете включить авто конвертацию валюты, которая поступила на ваш баланс whitebit от клиента по заявке. Для этого вам необходимо в разделе "**AUTO SELL (AFTER ACCEPT PAYMENT)**" для "**Convert to**" выбрать валюту (USDT/USDC/EUR) в которую будет происходить автоматическая конвертация средств по заявке - нажать "[**Save**](#user-content-fn-11)[^11]".

{% hint style="info" %}
В случае, если вы хотите использовать связку мерчанта и модуля выплаты whitebit для автоматизации процесса обмена и использования ликвидности биржи, вам необходимо будет включить авто конвертацию в настройках мерчанта whitebit. Обычно включается авто конвертация в USDT.&#x20;
{% endhint %}

{% hint style="warning" %}
Также обратите внимание, что **валюта в которую будет производиться авто конвертация (***"**Convert to" в настройках мерчанта*****) и валюта из которой будет происходить выплата (*****"Withdraw from" в настройка модуля выплат*****) должны совпадать для автоматизации процесса.**
{% endhint %}

### Webhook

{% hint style="info" %}
Настройка Webhook важна для:

* Моментального перевода статуса заявки "На выплату" сразу после получения депозита на whitebit
* [**Отображения**](#user-content-fn-12)[^12] на странице заявки количества подтверждений сети для зачисления депозита&#x20;
  {% endhint %}

#### Настройка webhook

1. Справа сверху наведите на иконку профиля -> нажмите на "[**API**](#user-content-fn-13)[^13]".
2. На странице "**API**" в блоке "**Webhook**" нажмите "[**Редактировать**](#user-content-fn-14)[^14]".
3. На открывшейся странице нажмите "[**Продолжить**](#user-content-fn-15)[^15]" -> ваc перенаправит на страницу "[**Соединение**](#user-content-fn-16)[^16]".
4. Перейдите в админ панель BoxExchanger -> страница "**Мерчант и API**" -> настройки мерчанта whitebit -> на странице настроек в разделе "**WEBHOOK SETTINGS**" [**скопируйте URL**](#user-content-fn-17)[^17].
5. Вернитесь на страницу "**Соединение**" в ЛК whitebit -> в поле "**Адрес webhook**" вставьте URL из шага 4 -> нажмите "[**Сгенерировать ключ**](#user-content-fn-18)[^18]" -> введите 2FA.
6. [**Скопируйте**](#user-content-fn-19)[^19] в надежное место "**Секретный ключ**" и "**Ключ**" (публичный ключ) -> нажмите "**Подтвердить**".
7. Добавьте публичный ключ в TXT запись домена, указанного при создании ключа. Разберем на примере добавления записи в Cloudflare. \
   а) Зайдите в ЛК Cloudflare -> на странице "**Websites**" [**зайдите**](#user-content-fn-20)[^20] на страницу настроек домена, который вы указывали при создании ключа.\
   б) Перейдите на страницу "**DNS**" -> "**Records**" -> нажмите "[**Add record**](#user-content-fn-21)[^21]" -> "**Type**" выберите "**TXT**" -> "**Name**" введите "**www**", если у вас домен формата [www.exchanger.com](http://www.exchanger.com) либо "**@**" если в формате exchanger.com либо **субдомен**, если в формате subdomain.exchanger.com -> в поле "**Content**" вставьте публичный ключ webhook из шага 6 -> нажмите "**Save**".
8. Вернитесь на страницу "Webhook" в ЛК whitebit -> [**включите**](#user-content-fn-22)[^22] webhook, переведя ползунок в активное состояние -> доступ "**Коды**" можно отключить.
9. После того как webhook будет активирован, перейдите обратно в настройки домена Cloudflare из шага 7 б) -> [**удалите**](#user-content-fn-23)[^23] добавленную TXT запись (нажмите "Edit" в поле с TXT записью -> Delete -> подтвердите удаление).
10. Перейдите в админ панель BoxExchanger -> страница "**Мерчант и API**" -> настройки мерчанта whitebit -> на странице настроек в разделе "**WEBHOOK SETTINGS**" -> в поле "**Webhook key**" [**вставьте**](#user-content-fn-24)[^24] публичный ключ из шага 6 -> нажмите "**Save**" -> в поле "**Webhook Secret**" вставьте секретный ключ из шага 6 -> нажмите "**Save**".
11. Добавьте IP, с которого whitebit отправляет webhook, в белый список CloudFlare. Инструкция:[ip-v-belyi-spisok-cloudflare](https://manual.boxexchanger.net/dlya-razrabotchikov/nastroika-firewall/ip-v-belyi-spisok-cloudflare "mention").\
    \&#xNAN;***IP вы можете уточнить у поддержки BoxExchanger.***
12. Протестируйте работу мерчанта whitebit.&#x20;

### Дополнительные настройки

* [**Enable debug mode**](#user-content-fn-25)[^25] - значение "1" включает отправку дополнительных логов для разработчиков. Может быть полезно для анализа логов при возникновении трудностей с модулем. Без крайней необходимости рекомендуем не включать и оставить значение "0".
* [**Enable Wallet deposit cron**](#user-content-fn-26)[^26] - значение "1" активирует возможность [генерации статического адреса](https://manual.boxexchanger.net/dopolnitelnye-sistemy/vnutrennii-koshelek#3.-staticheskii-adres-dlya-depozita) для депозита в ЛК пользователя. По умолчанию выставлено "0".
* [**Add hours to expires time**](#user-content-fn-27)[^27] **(when find tx with 0 confirms)** - настройка увеличения времени заявки после того как система определит транзакцию (будет 0 подтверждений у транзакции). \
  0.25 = 15min. К пример, если вы укажите 0.5, то время заявки будет увеличено на 30 минут после определения транзакции.
* [**BTC/LTC type address**](#user-content-fn-28)[^28] - выбор формата адреса (p2sh-segwit/bech32) для депозита для валют BTC и LTC.&#x20;
* [**Provider fiat USD/EUR/UAH/KZT** ](#user-content-fn-29)[^29]- выбор провайдера через который будет осуществляться прием фиатной валюты. На данный момент whitebit по API поддерживает только VISAMASTER.

### Проксирование запросов

{% hint style="info" %}
Для конфигурации SOCKS5-прокси на вашем сервере, вы можете воспользоваться инструкцией: [ustanovka-socks5-proksi](https://manual.boxexchanger.net/dlya-razrabotchikov/ustanovka-socks5-proksi "mention").
{% endhint %}

{% hint style="info" %}
Перед настройкой проксирования запросов в админ панели скрипта BoxExchanger, зайдите в ЛК whitebit и добавьте IP-адрес сервера, на котором сконфигурированы прокси, в белый список API ключа для приема. \
В противном случае, whitebit деактивирует ваш API ключ после первого запроса с IP-адреса, которого нет в белом списке ключа.&#x20;
{% endhint %}

Для отправки запросов через SOCKS5 proxy, на странице настроек мерчанта whitebit в поле "**Socks Proxy URI**" укажите ссылку на SOCKS5 proxy в формате `socks5://username:password@host:port`-> нажмите "[**Save**](#user-content-fn-30)[^30]".

## Прием фиатных валют

{% hint style="success" %}
Для работы с фиатными валютами - обратитесь в поддержку whitebit с запросом активации фиатного шлюза для необходимой валюты.
{% endhint %}

{% hint style="warning" %}
**Внимание!** Для приема **EUR,USD** в настройке данных направлений - шаг "**Отображение полей**" - обязательно включите созданное по-умолчанию поле "E-mail". \
Со стороны whitebit требование запрашивать от клиента ввод Email адреса.&#x20;
{% endhint %}

### Верификация

* Требования по верификации вы всегда можете уточнить у представителей whitebit

{% hint style="info" %}
Для **локализации текста** используйте символ решётки и код языка перед текстом и "##" после текста. \
\&#xNAN;*Например: ##ua## Текстова інформація ##*

Текст, который находится между открывающими и закрывающими тегами будет отображаться только на украинской версии сайта. К примеру если клиент зайдет на сайт на украинском языке то он будет видеть только "*Текстова інформація*"
{% endhint %}

#### Верификация пользователя

{% hint style="info" %}
Ручная верификация пользователя настраивается в направлении: [#ruchnaya-verifikaciya](https://manual.boxexchanger.net/napravlenie#ruchnaya-verifikaciya "mention")\
Инструкцию по созданию и настройке направления вы можете найти тут: [napravlenie](https://manual.boxexchanger.net/obmen/napravlenie "mention")
{% endhint %}

* [Перейдите в админ панель - вкладка "*Направления*" - "*Настройки направлений*" - нажмите "*Изменить*" в строке с нужным направлением](#user-content-fn-31)[^31].&#x20;
* [В настройках направления перейдите к шагу "*Верификация*" - нажмите "*Включить*" напротив "*ВЕРИФИКАЦИЯ: (IDENT DOCUMENTS PASSPORT ETC)*"](#user-content-fn-32)[^32].
* [В поле "*Count verification photos*" введите кол-во требуемых от пользователя изображений для верификации - в поле редактора текста введите текст с инструкцией для верификации пользователя](#user-content-fn-33)[^33] и обязательно сохраните все изменения. (см. примеры ниже)

<details>

<summary>Примеры текста для верификации личности на разных языках</summary>

\##ru##\
Для прохождения верификации личности предоставьте: \
1\. **Фотографию одного из документов удостоверяющих личность**\
\- Паспорт (первая страница)\
\- ID-карта (передняя сторона)\
\- Документ удостоверяющий личность (передняя сторона)\
2\. **Фотографию (селфи) с документом, удостоверяющим вашу личность.**\
В кадре должно быть видно ваше лицо и документ в соответствующем формате.\
\##\
\
\##ua##\
Для проходження верифікації особи надайте:\
1\. **Фотографію одного з документів, що засвідчують особу**\
\- Паспорт (перша сторінка)\
\- ID-карта (лицьова сторона)\
\- Документ, що засвідчує особу (лицьова сторона)\
2\. **Фотографію (селфі) з документом, що засвідчує вашу особу**. \
У кадрі має бути видно ваше обличчя та документ у відповідному форматі.\
\##\
\
\##en##\
To pass identity verification, please, provide:\
1\. **Photo of one of the identity documents**\
\- Passport (first page)\
\- ID card (front side)\
\- driver's license (front side) \
2\. **Photo (selfie) of a person with an identity document.** \
The frame must show the face of the person and the document in the appropriate format.\
\##

</details>

* [После проделанных действий, на клиентской части на этапе оплаты заявки появится кнопка "*Пройти верификацию*" напротив поля "*Проверка личности*". При нажатии на эту кнопку открывается модальное окно с инструкцией и возможностью загрузить изображения для верификации. ](#user-content-fn-34)[^34]

#### Верификация валюты&#x20;

{% hint style="info" %}
Ручная верификация валюты включается в настройках валюты и **позволяет запросить у клиента только одно изображение**. \
Инструкцию по созданию и настройке валюты вы можете найти тут: [valyuty](https://manual.boxexchanger.net/obmen/valyuty "mention")

* **Данный тип верификации можно использовать для верификации банковской карты клиента.**

* **Верификация "Валюты А" будет запрашиваться во всех направлениях, в которых клиент отдает обменному сервису "Валюту А".**&#x20;

* Для верификации "Валюты Б", которую обменный сервис отправит клиенту, следуйте инструкции тут: [#2.-verifikaciya-rekvizitov-vyplata](https://manual.boxexchanger.net/valyuty/verifikaciya#2.-verifikaciya-rekvizitov-vyplata "mention")
  {% endhint %}

* [Перейдите в админ панель - вкладка "*Валюты*" - "*Настройка валют*" - нажмите "*Изменить*"  в поле нужной валюты](#user-content-fn-35)[^35].&#x20;

* [В настройках валюты перейдите к шагу "*Другие настройки*" - нажмите "*Включить*" напротив поля "*ВЕРИФИКАЦИЯ*"](#user-content-fn-36)[^36].&#x20;

* [В поле редактора текста введите текст с инструкцией для прохождения верификации](#user-content-fn-37)[^37] (см. пример ниже) и обязательно сохраните изменения&#x20;

<details>

<summary>Пример текста для верификации банковской карты</summary>

\##ru## \
Для того, чтобы верифицировать виртуальную карту Вам необходимо сделать следующие шаги:

1. **Необходимо сделать скриншот из Вашего личного кабинета (в банкинге), на котором должно быть видно**:\
   \- 4 последние цифры номера карты\
   \- срок действия карты
2. **Сделать фото на котором будет написано ФИО, дата и подпись владельца карты, а также видна виртуальная карта с банкинга.**
3. Загрузить фото в поле верификации валюты.&#x20;

\
Для того чтобы верифицировать физическую карту:

1. Возьмите белый лист бумаги.
2. Расположите на листе банковскую карту так, чтобы было видно номер карты и дату.
3. Карта и ее тень должны быть видны полностью.
4. Напишите от руки название сервиса "yourExchangerName".
5. Поставьте дату и подпись.
6. Сфотографируйте и загрузите изображение.
7. Готово!\
   \##

</details>

* После проделанных действий, на клиентской части на этапе оплаты заявки появится [кнопка "*Пройти верификацию*" напротив поля с названием валюты](#user-content-fn-38)[^38]. [При нажатии на эту кнопку открывается модальное окно с инструкцией и возможностью загрузить изображение для верификации.](#user-content-fn-39)[^39]

[^1]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FfXJRzU3Ovb8eyKRbt9Vn%2Fimage.png?alt=media\&token=f50e1dd1-f380-4179-8885-873ee2d43674)

[^2]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FAG9ylasVdVYhV0vDbHb6%2Fimage.png?alt=media\&token=8c327bde-cccb-4ad1-8ec6-0b480c21b32c)

[^3]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FsJzYC1kdwDRe2HnF9KnU%2Fimage.png?alt=media\&token=25cc8c9c-6c9a-4a7f-8b01-ec4b37c9fb15)

[^4]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FmlazIXoCDBNMIeKbLNky%2Fimage.png?alt=media\&token=8cbfc9b5-b02d-40f3-a9df-7b1a362e26e1)

[^5]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F4Cmnch6b37vOZOj4abBy%2Fimage.png?alt=media\&token=e7408ec7-c92f-4ef8-a359-a689a956b55b)

[^6]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FIaImMvAkp3eRfluKBOXt%2Fimage.png?alt=media\&token=84432fcf-7b5c-4500-b3a0-c8a59ad7795a)

[^7]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FgfwF1iB1gr0px37yz1cO%2Fimage.png?alt=media\&token=f9461078-cac0-4f48-b87d-db92d0151b97)

[^8]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FE2ajHmpIW4H5OS7BOaF9%2Fimage.png?alt=media\&token=75677314-ada7-4a23-a3e7-bfabef344ab9)

[^9]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F0As4UBk1q5HRmjqmmfBX%2Fimage.png?alt=media\&token=3ad044ed-9ea8-462a-b881-2f0cf8cf8ac9)

[^10]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FbA7VTviaaXfFpseD5Mnt%2Fimage.png?alt=media\&token=08239e3b-7834-4e21-84e5-5d74addd350f)

[^11]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F9QebNOIOVtqeaYLr6kGb%2Fimage.png?alt=media\&token=8b13fe12-8db7-4510-856c-ff0c01f28ceb)

[^12]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FOQ7S07kMIlLoUIWUqodX%2Fimage.png?alt=media\&token=b901a9b4-8f15-48ba-b979-071fb2c090b3)

[^13]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2Flm687yrZnU0agAKduBoI%2Fimage.png?alt=media\&token=8a090b4d-5b3c-415e-b504-15333c5b6d5e)

[^14]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FiS8vXKTUzNBVmRJZvsvh%2Fimage.png?alt=media\&token=e822f9be-eb86-4c7a-a78e-aa78986b8845)

[^15]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FLVml1NyVe2fqzsYUvqCj%2Fimage.png?alt=media\&token=66271a13-9f47-47e8-94c1-42d2eb83589d)

[^16]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FdlquAvrd8wvkD4xMKroN%2Fimage.png?alt=media\&token=a788e497-a94d-4f51-9d52-90bdff69bc2b)

[^17]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FohEq52quApAeOLIKkRZp%2Fimage.png?alt=media\&token=6b7e9fcd-bfbc-4411-b8a0-e34bc7ecf5cf)

[^18]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FS6PvdCEEMnPfrOS26eAU%2Fimage.png?alt=media\&token=d680dda8-8f07-434a-92d0-5ae569e8c4a1)

[^19]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FU6vZpcP1TzQmjqkdIXdl%2Fimage.png?alt=media\&token=e13c014d-5415-4b03-8c90-99ec2a23ec14)

[^20]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FcXLcjHcItG9eCq9UoBaZ%2Fimage.png?alt=media\&token=baa9d570-4169-49c6-80f2-66f68357851d)

[^21]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FfLUP7P3YfuvIHBc2p2Dh%2Fimage.png?alt=media\&token=b9ede628-8253-4496-85a3-9d25709beeb3)

[^22]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2Fe6DMo8a1Wm04uEnxmnA8%2Fimage.png?alt=media\&token=62db6c96-f9bd-4e05-b559-33f9deb8f143)

[^23]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FIbYZVy4PTSuWpVKAImdr%2Fimage.png?alt=media\&token=568120ea-1589-4d76-9ce1-2452c714b3d2)

[^24]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FfZUeAk0NhLWyejyaz6Y1%2Fimage.png?alt=media\&token=cffc4bc9-f59e-4294-9e53-f46ea1e6347c)

[^25]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F9b9anAGJf3gTOgGI8iTK%2Fimage.png?alt=media\&token=d3f0a79e-1b83-4db3-82b0-878cd98cdbb4)

[^26]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F5cYNlDVc9tkB23wuFXrQ%2Fimage.png?alt=media\&token=78cf9c32-e3cb-4fbe-9541-114b34dafc55)

[^27]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FnMSkJiKCbRhqf2vsNjgm%2Fimage.png?alt=media\&token=823fcff3-989e-48ba-acdd-6d45aa7dad95)

[^28]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FkyXiHIeZPM2n2NhzULfM%2Fimage.png?alt=media\&token=8ffe39cf-1155-4837-96cb-ffc9845d58c9)

[^29]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F0u6dxSlOmkvFbZn0lZxT%2Fimage.png?alt=media\&token=3874e542-e94d-47db-ac07-6a182d3783c9)

[^30]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F4NxXw09wOJqQieUbI6wY%2Fimage.png?alt=media\&token=425908ff-93dc-42d6-92c1-6b6495fa2161)

[^31]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FSMDffnnWAaPUxaW04C3t%2Fimage.png?alt=media\&token=d67b9cba-dc5c-4efc-be0d-1c7b54d8496d)

[^32]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FptbdsUDKrjjcWCg15Lfw%2Fimage.png?alt=media\&token=81639ff0-ed99-450c-85e9-24b5dc1db470)

[^33]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FUVTydjV3Cw9ggV2AKj3c%2Fimage.png?alt=media\&token=70e8c93c-6a77-4252-adb4-faea2d26869a)

[^34]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FLzEiL6ZqY4Ta4Q9ssuFy%2Fimage.png?alt=media\&token=3c449edd-5826-4a27-b22b-0aa9819ceea4)

[^35]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2Fep6uzCi1GVKFdPQu9yHU%2Fimage.png?alt=media\&token=22526a34-7c97-4a39-bab5-ecfbae10c8fc)

[^36]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FNIMZaVnWwgxvqO2qpEZP%2Fimage.png?alt=media\&token=078a75ec-7a40-49d0-97c4-dc9ed5b86043)

[^37]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F16sIUAv4xyCb8Y50TQWj%2Fimage.png?alt=media\&token=bfeaffb3-9a20-4b5f-bbce-99ff2936093f)

[^38]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FgRYKSxJPg1VXxpozn0D4%2Fimage.png?alt=media\&token=2055cb6c-0932-4f32-be75-a974cb517718)

[^39]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FjM3yMHtcL7ynpxMLTb0S%2Fimage.png?alt=media\&token=64980c6e-1a00-4960-b94d-07015493620d)
