diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..124c5fe --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +logpass.php \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..3637283 --- /dev/null +++ b/.htaccess @@ -0,0 +1,2 @@ +RewriteEngine On +ErrorDocument 404 https://www.antonbinom.ru/ehya-read/404.html \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..4c71720 --- /dev/null +++ b/404.html @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Онлайн магазин книг - Ehya + + +
+
+
+ +
+ + +
+
+ + + +
+
+ +
+ +
+
+
+ + +
+
+ +
+ +
+ +
+
+
+
+

Ошибка 404

+

Такой страницы не существует!

+
+ +
+ +
+ +
+ + + + + + + Кнопка: Наверх + + + + + + + + diff --git a/README.md b/README.md index 7f76356..750be22 100644 --- a/README.md +++ b/README.md @@ -1 +1,30 @@ -# web-start-easy \ No newline at end of file +# Ehya + +Выпускной проект курса Web-start в Glo Academy + +## Описание + +Одностраничный сайт онлайн магазина книг Ehya + +## Функционал + +- Адаптивная верстка +- Плавный скролл +- Валидация форм +- Отправка формы на email +- Страница 404 +- Слайдеры +- Видео + +## Стек технологий + +- HTML +- CSS +- SASS +- JS +- JQuery +- Плагины +- PHP Mailer +- Pixel Perfect + +## Ссылка diff --git a/admin/.htaccess b/admin/.htaccess new file mode 100644 index 0000000..f7d0475 --- /dev/null +++ b/admin/.htaccess @@ -0,0 +1,16 @@ + +RewriteEngine on + +DirectoryIndex textolite.php + +RewriteCond %{REQUEST_FILENAME} !-f + +RewriteRule ^.*$ textolite.php?q=$0 [L,NC,QSA] + + + +deny from all + + + +Options -Indexes \ No newline at end of file diff --git a/admin/conf.ini b/admin/conf.ini new file mode 100644 index 0000000..1a283a1 --- /dev/null +++ b/admin/conf.ini @@ -0,0 +1,54 @@ +lang = en,ru + +password = 6fbde3e2135f10ee603ff6f59bc97d4b0a4d4e9a + +session = 03be9b56c989d364f38839eae78e69b7a9daebf8 + +pass_complexity = 500000 + +pass_complexity_js = 14999 + +auth_time = 1628524760 + +auth_error_time = + +auth_error_list = + +auth_error_limit = 5 + +auth_lockout_duration = 1 + +auth_session_reset = 60 + +auth_bot_filter = 1 + +logout_to_site = 0 + +site_scripts = 1 + +site_styles = 1 + +code_redraw_delay = 200 + +code_undo_limit = 50 + +code_highlighting = 1 + +allowed_ext = + +visual_ext = html,htm,shtml,shtm,stm,php + +editable_ext = html,htm,shtml,shtm,stm,php,css,js,xml,txt + +default_file = index.html + +folder_size = 1 + +document_root = + +update_final = 1 + +update_beta = 0 + +cache = + diff --git a/admin/lang.ini b/admin/lang.ini new file mode 100644 index 0000000..24a5b7d --- /dev/null +++ b/admin/lang.ini @@ -0,0 +1,237 @@ +[ru] + + 404 = "Страница не найдена" + 307 = "Временное перенаправление" + 403 = "Доступ запрещен" + + auth = "Авторизация" + login = "Войти" + password = "Пароль" + show_password = "Показать пароль" + hide_password = "Скрыть пароль" + + files = "Файлы" + settings = "Настройки" + logout = "Выход" + save = "Сохранить" + not_save = "Не сохранять" + + file_name = "Имя" + file_size = "Размер" + file_changed = "Изменён" + file_menu = "Меню" + add_file = "Добавить файл" + delete_file = "Удалить файл" + deletion_confirm = "Подтверждение удаления" + deletion_cancel = "Отменить удаление" + + request_rejected = "Запрос отклонён" + request_blocked = "Настройки сервера блокируют запрос" + no_response = "Сервер не отвечает" + old_browser = "Нужен новый браузер" + requires_javascript = "Нужен JavaScript" + not_writable = "Нет прав на запись в файл" + document_root_error = "Проблема с DOCUMENT_ROOT" + no_frames = "Не работает iframe" + + password_hashing = "Создание хеша" + password_checking = "Проверка пароля" + access_granted = "Доступ разрешен" + access_denied = "Доступ запрещен" + + saving = "Сохранение" + saved = "Изменения сохранены" + not_saved = "Изменения не сохранены" + reset_session = "Сброс сессии" + access_closed = "Доступ закрыт" + login_again = "Войти снова" + + uploading = "Загрузка файлов" + uploading_complete = "Загрузка файлов завершена" + uploading_error = "Сбой в загрузке файлов" + extension_error = "Файл имеет недопустимое расширение" + count_limit = "Лимит сервера на количество файлов за раз" + size_limit = "Лимит сервера на размер файла" + file_deletion = "Удаление файла" + file_deleted = "Файл успешно удалён" + deletion_error = "Сбой в удалении файла" + + unknown_relation = "Элемент имеет неизвестные зависимости" + element_busy = "Элемент используется скриптами" + disable_script = "Отключить скрипты сайта" + disable = "отключить" + disabling_scripts = "Отключение скриптов сайта" + scripts_disabled = "Скрипты сайта отключены" + + new_version = "Доступна новая версия" + need_update = "Необходимо установить новую версию" + install = "установить" + not_install = "Не устанавливать" + download_installer = "Загрузка установочных файлов" + system_update = "Обновление системных файлов" + update_error = "Не удалось перезаписать системные файлы" + install_complete = "Установка завершена" + no_connect = "Нет соединения с сервером" + + attachment_domain = "Привязка кода активации к домену" + attachment_notice = "Процедура привязки необратима, изменить домен в будущем будет невозможно. Убедитесь, что система установлена на правильном домене и подтвердите свои действия." + attach = "Привязать" + cancel = "Отмена" + + new_password = "Новый пароль" + login_attempts = "Попыток авторизации с неверным паролем" + lockout_duration = "Длительность блокировки в часах" + session_autoreset = "Завершение сессии после бездействия в минутах" + redirect_to_site = "Перенаправлять на сайт после выхода из системы" + source_editor = "Редактор исходного кода" + visual_editor = "Визуальный редактор" + file_manager = "Файловый менеджер" + enable_scripts = "Включить скрипты сайта во время редактирования" + enable_styles = "Включить стили сайта во время редактирования" + redraw_delay = "Обновлять код после бездействия в миллисекундах" + steps_for_undo = "Количество шагов для отката изменений через Ctrl+Z" + enable_highlighting = "Включить подсветку синтаксиса и нумерацию строк" + display_catalog_size = "Отображать размер каталогов в файловом менеджере" + main_page_or_file = "Главная страница или файл сайта" + new_version_notify = "Сообщать о появлении новых версий системы" + beta_version_notify = "Сообщать о появлении новых бета-версий системы" + restore_settings="Восстановить настройки по умолчанию" + language = "Язык интерфейса" + standard = "Стандартная версия" + extended = "Расширенная версия" + activate = "Код активации" + system = "Система" + + auth_error_limit_desc = "Ограничивает максимально допустимое количество ошибок при введении пароля. Если количество ошибок с одного IP-адреса превышает это значение, пользователь блокируется на период, который можно настроить в следующем параметре." + auth_lockout_duration_desc = "Отвечает за длительность блокировки пользователей, превысивших максимально допустимое количество ошибок при введении пароля. После истечения указанного периода пользователь получает одну дополнительную попытку авторизации." + auth_session_reset_desc = "Ограничивает время жизни сессии после потери системой возможности поддерживать соединение с сервером." + logout_to_site_desc = "В случае включения выход из системы будет сопровождаться перенаправлением пользователя на сайт по адресу последней редактируемой страницы или файла." + site_scripts_desc = "Скрипты сайта могут мешать редактированию некоторых элементов в визуальном редакторе. Отключение скриптов может сделать такие элементы доступными для визуального редактирования." + site_styles_desc = "Стили сайта могут мешать редактированию некоторых элементов в визуальном редакторе. Отключение стилей может помочь добраться до таких элементов в визуальном редакторе." + code_redraw_delay_desc = "Когда пользователь вводит новый код в редакторе исходного кода, система ждет паузу в процессе ввода, чтобы проверить и оформить новый код. Данный параметр определяет, какой должна быть пауза, чтобы система могла начать переоформление. Чем меньше его значение, тем чаще будет переоформляться новый код в процессе ввода. Увеличение значения может заметно снизить нагрузку на браузер." + code_undo_limit_desc = "Определяет максимальную глубину отката изменений в редакторе исходного кода через Ctrl+Z." + folder_size_desc = "Получение данных о размере каталогов может замедлять работу файлового менеджера на больших сайтах со сложными структурами. На таких сайтах можно отключить отображение размера каталогов." + code_highlighting_desc = "Подсветка синтаксиса и нумерация строк облегчает редактирование кода. Отключение может заметно снизить нагрузку на браузер." + default_file_desc = "Значение должно содержать имя реально существующего в корне сайта файла. Система будет открывать в редакторе этот файл в качестве главной страницы сайта, а также во всех случаях, когда файл для редактирования не выбран или не может быть открыт" + + ru = "Русский" + en = "Английский" + +[en] + + 404 = "Page not found" + 307 = "Temporary redirect" + 403 = "Forbidden" + + auth = "Authorization" + login = "Log in" + password = "Password" + show_password = "Show password" + hide_password = "Hide password" + + files = "Files" + settings = "Settings" + logout = "Logout" + save = "Save" + not_save = "Do not save" + + file_name = "Name" + file_size = "Size" + file_changed = "Changed" + file_menu = "Menu" + add_file = "Add file" + delete_file = "Delete file" + deletion_confirm = "Confirm" + deletion_cancel = "Cancel" + + request_rejected = "The request was rejected" + request_blocked = "Server settings blocked the request" + no_response = "Server is not responding" + old_browser = "Requires a newer browser" + requires_javascript = "Requires JavaScript" + not_writable = "No permissions to write to file" + document_root_error = "The problem with DOCUMENT_ROOT" + no_frames = "Iframe is not working" + + password_hashing = "Password hashing" + password_checking = "Password checking" + access_granted = "Access granted" + access_denied = "Access denied" + + saving = "Saving" + saved = "The changes have been saved" + not_saved = "The changes are not saved" + reset_session = "Reset session" + access_closed = "Access is closed" + login_again = "Login again" + + uploading = "Uploading files" + uploading_complete = "Files uploaded" + uploading_error = "Failure in file uploading" + extension_error = "Forbidden extension" + count_limit = "Number of files exceeds server limit" + size_limit = "File size exceeds server limit" + file_deletion = "File deletion" + file_deleted = "File is deleted" + deletion_error = "Failure in file deletion" + + unknown_relation = "The element has unknown relations" + element_busy = "The element is used by scripts" + disable_script = "Disable website scripts" + disable = "disable" + disabling_scripts = "Disabling website scripts" + scripts_disabled = "Website scripts is disabled" + + new_version = "A new version is available" + need_update = "Requires a newer version" + install = "install" + not_install = "Do not install" + download_installer = "Download installation files" + system_update = "System files update" + update_error = "Unable to overwrite system files" + install_complete = "Installation complete" + no_connect = "Could not connect to server" + + attachment_domain = "Attachment of an activation code to the domain name" + attachment_notice = "The procedure of an attachment is irreversible, changing the domain name in the future will be impossible. Make sure that the system is installed on the correct domain name and confirm your actions." + attach = "Attach" + cancel = "Cancel" + + new_password = "New password" + login_attempts = "Login attempts with an incorrect password" + lockout_duration = "Lockout duration in hours" + session_autoreset = "Completion of session after inaction in minutes" + redirect_to_site = "Redirect to website after logout" + source_editor = "Source editor" + visual_editor = "Visual editor" + file_manager = "File manager" + enable_scripts = "Enable website scripts during editing" + enable_styles = "Enable website styles during editing" + redraw_delay = "Redraw a code after inactivity in milliseconds" + steps_for_undo = "Quantity of steps for rollback of changes through Ctrl+Z" + enable_highlighting = "Enable syntax highlighting and line numbering" + display_catalog_size = "Display the size of catalogs in the file manager" + main_page_or_file = "Main page or file of website" + new_version_notify = "Notify when new versions are available" + beta_version_notify = "Notify when new beta versions are available" + restore_settings="Restore the default settings" + language = "Interface language" + standard = "Standard version" + extended = "Extended version" + activate = "Activation code" + system = "System" + + auth_error_limit_desc = "Login attempts with an incorrect password" + auth_lockout_duration_desc = "Lockout duration in hours" + auth_session_reset_desc = "Completion of session after inaction in minutes" + logout_to_site_desc = "Redirect to website after logout" + site_scripts_desc = "Enable website scripts during editing" + site_styles_desc = "Enable website styles during editing" + code_redraw_delay_desc = "Redraw a code after inactivity in milliseconds" + code_undo_limit_desc = "Quantity of steps for rollback of changes through Ctrl+Z" + code_highlighting_desc = "Enable syntax highlighting and line numbering" + folder_size_desc = "Display the size of catalogs in the file manager" + default_file_desc = "Main page or file of website" + + ru = "Russian" + en = "English" \ No newline at end of file diff --git a/admin/textolite.css b/admin/textolite.css new file mode 100644 index 0000000..85f6887 --- /dev/null +++ b/admin/textolite.css @@ -0,0 +1 @@ +/* Textolite v2.12s */ *{margin:0;padding:0}fieldset,iframe{border:none}ul,ol{list-style-type:none}:focus{outline:none}body{font-family:Verdana;font-size:11px;line-height:20px;color:#b7b8bd;text-shadow:1px 1px 0 #3f3f41}h1{font-weight:normal}a{color:#e5e6eb;text-decoration:none}a:visited{color:#e5e6eb}a:hover{color:#adc8fe;text-decoration:underline}a:active{color:#a6c0e1}input[type="text"],input[type="password"]{display:block;width:145px;height:17px;padding:3px;border:1px solid #38383a;border-bottom-color:#5c5c5e;border-right-color:#555557;border-left-color:#3c3c3e;border-radius:5px;font-family:"Courier New";font-size:16px;line-height:16px;letter-spacing:-1px;text-shadow:1px 1px 0 #38383a;color:#fff;background-color:#434345}input[type="text"][disabled],input[type="password"][disabled]{color:#5c5c5e}input[type="button"]{display:block;width:94px;height:22px;margin-left:-1px;padding:0 0 2px 0;border-top:1px solid #6ed76e;border-bottom:1px solid #5fb85f;border-left:1px solid #68cb68;border-right:1px solid #68cb68;border-radius:5px;font-size:11px;line-height:20px;font-family:Verdana;text-align:center;white-space:nowrap;color:#fff;text-shadow:1px 1px 0 #509b50;background:#68cb68;background:#68cb68 linear-gradient(to bottom,#6ed76e,#5fb85f);cursor:pointer}input[type="button"]:hover{border-top-color:#75e375;border-bottom-color:#64c364;border-left-color:#6fd86f;border-right-color:#6fd86f;background:#6fd86f;background:#6fd86f linear-gradient(to bottom,#75e375,#64c364)}input[type="button"]:active{border-top-color:#46cc46;border-bottom-color:#3da13d;border-left-color:#42b042;border-right-color:#42b042;color:#deeede;background:#42b042;background:#42b042 linear-gradient(to bottom,#46cc46,#3da13d)}input[type="button"][disabled],input[type="button"][disabled]:hover,input[type="button"][disabled]:active{border:1px solid #565658;box-shadow:1px 1px 0 0 #6f6f72,inset 1px 1px 0 0 #6f6f72;text-shadow:1px 1px 0 #545456;color:#87878b;background:#626265;cursor:default}@font-face{font-family:'textolite';src:url('data:font/woff;base64,d09GRgABAAAAABfgAA8AAAAAJbAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIwleU9TLzIAAAGUAAAAQgAAAFZeH2kSY21hcAAAAdgAAACvAAACdBHLSCxjdnQgAAACiAAAABMAAAAgBtX/BGZwZ20AAAKcAAAFkAAAC3CKkZBZZ2FzcAAACCwAAAAIAAAACAAAABBnbHlmAAAINAAADDMAABDI4tpuUGhlYWQAABRoAAAAMwAAADYM4wHJaGhlYQAAFJwAAAAgAAAAJAd5A6NobXR4AAAUvAAAADUAAABQRFj/82xvY2EAABT0AAAAKgAAACopfiRqbWF4cAAAFSAAAAAgAAAAIAFbDJRuYW1lAAAVQAAAAYIAAALZ9zve9XBvc3QAABbEAAAAnQAAANZEtTfocHJlcAAAF2QAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYMpJLMlj4HNx8wlhkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAKVkFSAB4nGNgZM5mnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4cDBwSzEH/sxiimIMYpgGFGUFyAL7fCfAAAHic7ZFLcoQwDAXbQMgjIRMG8uEQc5Y5UFY59OzJE9Ixoqq2yrKtcqmBJ6A3NzNA+6UR8eNqO+s9L2d94O796NzoNGk/DhBaIjuaz/Yzd34zuPPIsy9Mfv/KzBsX3lm4srL52sh/zOf6qN0W80xi9io8T1SEKxXhS0V4VOG5o8IGUBGNVdgKKsKvlsSm0DWJ32lNbA9tiT2ij8RG0WdC9PhKiB7fCdFjT9j+AORuDEYAeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPeJyNV2lsXNd1vudub5vtcd4yFGeGo3nkDDkkh9SsEklTI4kSRWosKxItUaotE4YiU1xCR3CiNrALeYGRxH8MQ0ldIzUigGqCIAsUAfWPGkbQoouLFHEBA03SBijqFJEDNG3RGIgFa9hz31CKigBFxdF9727nnnfOd75zLmHb29ur7DY7ScbIE+QVcr71ewPACMwZ2FLC6AYBqlHQNkzQONX4GuGScrlGKCVLOhASOUqkFEtEiKiYX14eLwNZfmX5y88/t7nWPlZ+YvyJPi9qkTEYsYQzAnlNhn+u401BpdGcgWaj2ajuo5V+8PDX2A+NQrEwDoVgj8jHQXq+Gnb3gdPduI/GoB8cr6L2NRv1WrEQ/u0pBAXYE8TAz4KPm6r7AJfshxlAWZpEScE+yOPCoAzFMgTwny98duPwLse2pPg0l+B99pFdg3vKQ/kY55LrUKOCF/qihVGY01mFAhtLW9lcNmZG4wxoRRj87Jgp3FRq1HZ2xQH4J+8zFNN7/ZlStT4+OSVsX1BWEbrr6n27zi+eqIOTNUBydnJmeqVYHqoxoQm++HIQNS2NAeAR/KwwICKodlmeYTob2+vNH9+3NuZZiTh2z4Bkj2z2Jg8fO3FsYSblpaNAO6Ogi2f/YsK2zBhwnZr8jE4lo2y0tJDZn+eS4D9QDbtBXycuybRQWQIwRyjQTZyCTZy86PgOE/4IOBrIfBEKNXQDeiRsPHYj0cklRhOdX8bjbXxuwWewbSeo5+FEPA5e2E3cgM1Eoh1X523/B32fvkwGSLbVl+9NaByPm0O7EboJoM5LOw4XqZFBBx2THwdNNerU4r2jm+HROO179P3usVvdY/CZ+G0/Ht/aij/tqZcbN+K/uzBeVgsI2/5o+yb7b8R5nOwmVVJvVfpsyqiBdicUrSEYumuDMDQXI8v4DRz4YwjqiJj39xaLhUCKXSOD9VoBMSwzCEC/WmkUkwi/ENSu73hNHGHgaTHQducRk00EX8WjU6a2rplhA6bQtC9IXRgR7Sk9osO3HdfI93zypz15w3XgO0a+kD+1qpumjg1E/hEQLxLRuC10kDTxya+CwO4BJxEErMd2nK5vtz9m15lFHOK3HAxWdKgys/JqUK+GXrUdGaBGdbvWwKDzMrC74rHrC9W7Z6sLC9Vb1QW4gv+3O1dUl6ZU27NACEVu+Jj3ouweMkxGW8OEcYaYQfFANvCAzxBOKV8knNMlQjltB5NBoy5ELwIpDjHAQ8ugQrCKBxbd3XkZp2iWB9XgvT1/njpduHs9mQb77dTpQfpEMvuDzkT9cvA2BYCueuO1o7Dfdn6WHorlw/Z752rDP2OaoL/VlijfoS1u0+eITfLo4yOtQxbqR6OAPDaHujLKQxdTRtaI+g5YIxIVlxQdLgQsYmAoJgPR9r0Bx015mugbgULRcx1ZhnqtKbUs5BpQK2h5iRRWQf5poNeFo0meG0DwNhujwH207qNX86+991r+6qPH/gX4v3beSlhHLiS8xOyElYCfWMc7v+n8tPOb45Z1HHQogH7cgsmXDkweeuoaffXSockDL13+4hdhHtdeOGwlEtbEbOKHyeTzb7zxfLLgXH2DvvmH6HyB3/uX+L03iUF2kRkyS86QM63FWh8l/JREfj55CIP8xMHhIqJHAp8jgguFDkQ8IK9L/KEBGP7WCGPoTUJCb5IlfCHt9rFkuXfAyWgK+c0yNNX3e7/z8U3HlVTxK7IrmqisYhh5vVrxkdgrir01L4nsnfR8NBNGR6BYv1BsKqKGxsjEXkAznYfVB0z0d1O/nEoLU5s1ek+8XLGs05/8UaXSL0wWswYsMNyl+T/hdyyvuPjPzw5f+dvDBx4P6k/mrEuPBKsPKeO9Ck89aLrPcbjUOXepYhSlqZUGfv9hu9Tz4utmw5DSkSA6d49f7YNU7/lkcmBseXXBfOnShdb+gScbSYwBtPEqO4u8IUmKVFsTSF8M5rhqMU2q7Ii0psyHeZDSKJ0nJOXZMcvADVKolGcrE/gCGWM3BmJIDRgBzd10Kqp/oOudmzkPxrP+3R7MXPj6Dq2Brus/16I9Xhbu3gpH2bP4IPfjvQdjMiDDrQLhjIcs/rRAdQhbxAcjSxifjLSD6mBQDXkLEL/FABstyBeadWyK6Ltmtd6NRN9FP7GenHc75615Obgdnnk766/hi+q8pUY/RHVy7oc7o15OLQ/t8zF9EfXRSD8ptYqCURJy6gaaAyGFmVFBCpYIcGgHycFGMqFUSu5GLsVsLR6wia8UqniaUucWZBY/vwjwXs67+2Goj33th1+lykg31qcW6YmHrnfeCTWCg6jc+sVr1y6uZ0P73GTnWIQMktnWgf4kEvuAibFgYIZlc117MYE0JojYlKgn2dxJhXARSDbdm+pJRC3BySAMasp9Fc+RaLRas4gILyjE+03E+QxkQRbzRc1zNL9Bv7GwsnJtFeDd6pFjKyvHjlTfhZWvXqSr83P4hqPgr762ujqvRS5M4MvEhYi2sELXX10HfI3h4D3f3mQv0l+QLMm1MgmNKqihJ9kmGhRIqKPv1sPMCTuZ0+46tW7vpNAmZk8fc/aL7rA35dwY6p/LlracaafkurDmTGPjQi3tYXercyUzAIU0fGnLdUvulJpyO1/xQj1+xJRPQz1ScXq/YMA6ZadicOv+jh7/u2RQ0Eb3uXY3gaMeKHISGxcVmnS3Stm5TOmGM+UNu/BC1ulcQ73Ww667BV/KlGA03bmypRYrOkKsn0V7GMjou8hh8unWk5PoxnKaSoPORcDiwKjFlkUcPUzoYtRERxtkMQYGUh4YEnld00Je15aIBlrbMg8dPHhgZnov+rEyURouBLlsr+86sahpW3bVTghvZNAO7G5+Z9ViIS+zMFgrYAWJA7hShtGkIPsQBKpRMaSA0QyrlmpF4QItQOUtJ7GWcLY3jsTLOZqG17Pj8cPrXu4fTL2OoL7u5eoq03+kEth0/uhcfrp2lLYrH+nm4/Bq5+lYDBLw83N2tpytI8Dtc7k/uKWZO0Foard08+jqETry2GMjCxfb1CRdrrqJXGWRPeQIOdc6UwImMqCz1iDl+lSVSg1zgI5JXOcbhGuMa2uYAqgEDFZBmC7YMoaxxGpsmYT2DIt8JbgdFIrDdT/wBwyRQZ/HqOKQ0OceRmS1MsPKNC8130PzdNmlX+X9SpYOhia7Z6gdxmFnZy9//fTyd6e5aEubD3/+0OTKiRItt9c3Lww9bCf9O3EHRu2j02+cPPPmMwc7XzP17ytjPWdqA1gZncfB2ZPzMsYfFiDrk+X26jOr7fLQ4MOJMS92J5XsObpvZvaZNxfuqE2Bbv4VPrt1MBzA+iBGzLfCsheEuxNJqjqawZuFBwfMO1ba89LWHTwoZmGaicGv4w6N3DF3amk6Df+OMsJ6KwyNe0FRdyji515oKrLYHRaAKHBHTsyDd5VMKzyDYJIg25f5OJsnOlZZfeQL5M/If5Gvtf74Vz+hPLb6OBX6e28/zYh459tf/9zJ9uEgYwC59WaLUZgco5J+5SriX5v7xT/R2OEXwJo1QTeEoYsNIvHaJrUN1JMbMb5MDJ0Yi0RgMQQCC1zl9cUIhjPePbRlwiyLLWIWs5aIxaz2v33wN3/9rW++8uWN9QtPnjtbq4yUko7jJHviKpnUMCZU+hchgas3VgvDpNLAe526aml4AXMw06MRwlub8n8d717IUWGNoPL/OJRBYQIh1CzcKxn6IbzVKYiopIkc4mPtFUrsR8LFyENxnmoDJTtfxFq7KxJFoDTcjB0UiQHoN30UHgpQ+tgP7i0Uw73/z63wa0xFKht9Z3TvKJQmR2Hn+WOdn5GRZD/nkdmEaLkeRlh0RZrRpH+QR+UJLgb0qPao0HVxWrO660wpW8mU1JhaCLjyAF6cP8VTth6Vj2KZdvGUNNN0FpGZsSKWNspglmVM7dQpzcywWgJ4SbfttM/pIZo2cHhndUkPV/P/czGcn1LfsfhBZpQO9WdKJXoWm6lS6e+fQl1iSb9vUEa4fZBXLDndF9VRoUiF82NxIfTRSMqLgq6tiPsrRQJXmvr0rnCltUet5DLrRvuSEap3fnTc0OOx/TFKh/oGAawaDFGK/bhuHDeMRFTNZI0agnDIh6KaiiYMWsW57q6imorUit1NBm7S72+yAIr3N+nkfwDyZpyiAHicY2BkYGAA4syJK6bG89t8ZeBmfgEUYbhy/r4IjP7/9X8Wiz5zEJDLwcAEEgUAhR4N6gB4nGNgZGBgDvqfxcDAov//6/+vLPoMQBEUIAIAlVgGI3icY37BwMD84v9/ZhAtCGZ/ZV7AwMCiDxUD4UiIHFMTlL0AiiMhmDEVKGcN0sPAAABwWBCBAAAAAAAAAADyASoBdAHgAg4CZgLeA5AD2AQgBGgExgUKBU4F5gZ2BpgGwAhkAAAAAQAAABQA8gAGAAAAAAACACAAMABzAAAArQtwAAAAAHicdZDLTsJAFIb/QcAIiQtIXM9GIzEpF2NMWBgSAu5csIB1gaEtth0yHQysfAvfwQdy67P4006I8dLmtN/55nTO6QBo4BMCxXXHKFjgjFnBJZziwfEJ/chxmfzkuII6Zo6r9HPHNdzg2XEdTbxxB1E+Y7bGu2OBhmg6LuFcXDo+ob91XCaPHFdwIWaOq/SJ4xqm4tVxHVfiY6g3exMFoZXXw5bsdbr3cr6XmipK/Vj6Wxtqk8mBXOnUqjjW3kInVu2sjiOrJirYxr455keYKpNFOpVdr3N0jypVxrdqeeiQvQQ9a1dyZXQix25vuTF6rRbWC63d9Nvt7z0xhMYGexhECBDCQuKatsV3Dx10cU+as0KysqiKkMJHTONjyy/CfCVjPmCsmKW0ihUx2cOCzyQ3Oz41bZRnE0bAHWLuY/5Y/22mjEOnKO8hOZ3HGX/XPTLSvNbP8+XxHzK8sGeP1nLSw7Qmn05i/GNuyXM5rK1pFvRefjqWto8273/+8wszOYivAAB4nG2JWw6DIBREGV/46Lt2GXx0SRRRiYRrANu4+9r425OczEmGJWynZv9pkSBFhhwFOEpUqNHggCNOOOOCK264o8WD5WE27pnQVCjplLaVjFG7aMgVPdlO+2YfQbN2qV413xTU97wjJYx7Z7NdQmZJTXkYpdfFMouXGcqOPu4X2WD6yEcTIvm18mYYo+iM3/8tuKJBSBsZ+wLakDDzAAAAeJxj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxlYnTYxMDJogRibuZgYOSAsPgYwi81pF9MBoDQnkM3utIvBAcJmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbOZhYuTR2sH4v3UDS+9GJgYXAAx2I/QAAA==')format('woff')}@keyframes a{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}@keyframes b{0%{color:#75e375}49%{color:#75e375}50%{color:#fff}99%{color:#fff}}@keyframes c{0%{color:inherit}80%{color:inherit}81%{color:#75e375}82%{color:#fff}83%{color:#75e375}84%{color:#fff}85%{color:#75e375}86%{color:#fff}87%{color:#75e375}88%{color:#fff}89%{color:#75e375}90%{color:inherit}99%{color:inherit}}@keyframes d{0%{color:inherit}90%{color:inherit}91%{color:#75e375}92%{color:#fff}93%{color:#75e375}94%{color:#fff}95%{color:#75e375}96%{color:#fff}97%{color:#75e375}98%{color:#fff}99%{color:#75e375}}#a{background-color:#434345}#a body{position:absolute;display:block;top:39%;left:50%;width:240px;margin-left:-115px;box-shadow:1px 1px 0 0 #38383a;border:1px solid #4f4f51;border-top-color:#5c5c5e;border-left-color:#555557;border-radius:7px;background-color:#4f4f51}#a fieldset{margin:28px 11px 0 11px;border-top:1px solid #59595c}#a legend{float:left;width:100%;margin-top:-22px;border-bottom:1px solid #444446}#a ol{display:none;float:right;height:12px;max-width:120px;margin:-17px -5px 0 0;overflow:hidden}#a li{float:right;display:block;width:12px;height:12px;font-size:10px;line-height:10px;color:#3f3f41;text-shadow:1px 1px 0 #5c5c5e}#a li:before{font-family:textolite;content:'\0802'}#a li.a:before{color:#fe8787;text-shadow:none}#a p samp{display:none;height:14px;padding-top:14px;font-family:Verdana;font-size:11px;line-height:20px;color:#fe8787;white-space:nowrap}#a p samp:before{float:left;margin-right:5px;font-family:textolite;content:'\0803';font-size:14px;color:#e37b7b}#a p samp+samp{display:block}#a p samp.b{padding-left:20px;color:#75e375;animation:b 100ms infinite linear}#a p samp.b:before{content:''}#a p samp.b~i{clear:both;float:left;display:block;margin-top:-15px;font-style:normal;color:#75e375;animation:a 2s infinite linear}#a p samp.b~i:before{content:'\0800';font-family:textolite;font-size:14px}#a p samp.c{color:#75e375}#a p samp.c:before{content:'\0801';font-size:16px;color:#75e375}#a p samp.d:before{content:'\0802';font-size:16px;margin-top:-1px}#a p+p{padding-top:21px}#a p+p span{float:left;display:block;margin-top:1px}#a p+p span+input{float:right;display:block;margin-right:-1px}#a p+p a{clear:both;float:right;display:block;width:18px;width:18px;margin-top:-24px;margin-right:4px;font-size:16px;color:#5c5c5e;text-shadow:1px 1px 0 #38383a;cursor:pointer}#a p+p a:hover{text-decoration:none;color:#65cdea}#a p+p a:active{color:#60aabe}#a p+p a:before{font-family:textolite;content:'\0806'}#a p+p a.e:before{content:'\0807'}#a p+p+p{padding:45px 0 12px 0}#a p+p+p input{display:block;width:94px;height:22px;margin-left:-1px;padding:0 9px 2px 9px;border-top:1px solid #6ed76e;border-bottom:1px solid #5fb85f;border-left:1px solid #68cb68;border-right:1px solid #68cb68;border-radius:5px;font-size:11px;line-height:20px;font-family:Verdana;color:#fff;text-shadow:1px 1px 0 #509b50;background:#68cb68;background:#68cb68 linear-gradient(to bottom,#6ed76e,#5fb85f);cursor:pointer}#a p+p+p input[disabled],#a p+p+p input[disabled]:hover,#a p+p+p input[disabled]:active{border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #3f3f41;color:#737376;background:#4f4f51;cursor:default}#b{background-color:#434345}#b>body>samp{position:absolute;display:block;top:39%;left:50%;width:1200px;margin-left:-600px;text-align:center;font-family:Verdana;font-size:66px;font-weight:bold;line-height:50px;color:#4f4f51;text-shadow:-1px -1px 1px #5c5c5e,1px 1px 1px #38383a}#b>body>samp span{display:block;height:250px;margin-top:-125px;font-size:250px;line-height:250px;letter-spacing:-15px}#c{overflow:hidden;padding-top:46px;background-color:#434345}#c body{position:absolute;width:100%;height:100%;height:calc(100%-46px);overflow-y:scroll}#c body>div:first-child{width:86.7%;max-width:1600px;margin:20px auto;border-bottom:20px solid #434345;border-radius:5px;box-shadow:0 -1px 0 0 #5c5c5e;background-color:#4f4f51}#c body>div:first-child ol{float:left;width:61px;margin:0 -71px 0 0;padding:7px 0;border-right:10px solid #555558;border-radius:5px 0 0 5px;list-style-type:decimal;font-family:"Courier New";font-size:17px;line-height:22px;background-color:#555558;overflow:hidden}#c body>div:first-child li{margin-left:78px}@media screen and (-webkit-min-device-pixel-ratio:0){#c body>div:first-child li{margin-left:85px}}#c pre{outline:none;padding:7px 14px;border-left:71px solid #555558;border-radius:5px 0 5px 5px;box-shadow:-1px 0 0 0 #5c5c5e,1px 1px 0 0 #38383a;font-family:"Courier New";font-size:17px;line-height:22px;white-space:pre-wrap;word-wrap:break-word;overflow:hidden}#c pre div:hover{border-radius:3px;background-color:#555558}#c pre.html span.f,#c pre.html span.f span.g,#c pre.html span.f span.h,#c pre.html span.f span.i{color:#87dc77}#c pre.html span.f span.j,#c pre.html span.f span.j span.f,#c pre.html span.f span.g span.j{color:#7fb4ea}#c pre.html span.g,#c pre.html span.g span.f,#c pre.html span.g span.j,#c pre.html span.g span.h,#c pre.html span.g span.h span.f,#c pre.html span.g span.h span.j,#c pre.html span.g span.i,#c pre.html span.g span.i span.f,#c pre.html span.g span.i span.j{color:#888}#c pre.html span.h,#c pre.html span.h span.f,#c pre.html span.h span.j,#c pre.html span.h span.g{color:#cd9b92}#c pre.html span.i,#c pre.html span.i span.f,#c pre.html span.i span.j,#c pre.html span.i span.g{color:#cd9b92}#c pre.html span.k,#c pre.html span.k span.f,#c pre.html span.k span.j,#c pre.html span.k span.h,#c pre.html span.k span.h span.f,#c pre.html span.k span.h span.j,#c pre.html span.k span.i,#c pre.html span.k span.i span.f,#c pre.html span.k span.i span.j,#c pre.html span.k span.g,#c pre.html span.k span.g span.f,#c pre.html span.k span.g span.j,#c pre.html span.k span.g span.h,#c pre.html span.k span.g span.h span.f,#c pre.html span.k span.g span.h span.j,#c pre.html span.k span.g span.i,#c pre.html span.k span.g span.i span.f,#c pre.html span.k span.g span.i span.j{color:#38383a;text-shadow:none;background-color:#f7e37b}#c pre.css span.f{color:#7fb4ea}#c pre.css span.j{color:#cd9b92}#c pre.css span.j span.g{color:#b7b8bd}#c pre.css span.j span.h{color:#87dc77}#c pre.css span.i,#c pre.css span.i span.f,#c pre.css span.i span.j,#c pre.css span.i span.g,#c pre.css span.i span.h{color:#888}#c pre.js span.f{color:#87dc77}#c pre.js span.j{color:#f5af2e}#c pre.js span.g,#c pre.js span.g span.f,#c pre.js span.g span.j,#c pre.js span.g span.h{color:#888}#c pre.js span.h,#c pre.js span.h span.f,#c pre.js span.h span.j,#c pre.js span.h span.g{color:#7fb4ea}#c pre.php span.f{color:#87dc77}#c pre.php span.j{color:#f5af2e}#c pre.php span.g,#c pre.php span.g span.f,#c pre.php span.g span.j,#c pre.php span.g span.h{color:#888}#c pre.php span.h,#c pre.php span.h span.f,#c pre.php span.h span.j,#c pre.php span.h span.g{color:#7fb4ea}#c pre.php span.i{color:#cd9b92}#c pre span.k{background:#f2ca00}#d{padding-top:46px}#d body{overflow:hidden}#d iframe{position:absolute;width:100%;height:100%;height:calc(100%-46px);font-size:36px;line-height:80px;font-weight:bold;text-align:center;color:#4f4f51;text-shadow:-1px -1px 1px #5c5c5e,1px 1px 1px #38383a}#e{position:fixed;top:0;left:-1%;right:-1%;height:46px;box-shadow:0 5px 20px 0 #303031;background:#6a6a6d;background:#6a6a6d linear-gradient(to bottom,#79797c,#6a6a6d,#626265,#626265,#6b6b6e);z-index:99999}#e>div{min-width:320px;max-width:1612px;width:84.7%;margin:0 auto}#e>div>div:first-child{float:left;margin-top:10px;margin-left:-2px;line-height:12px;cursor:default}#e div:first-child>h1{font-size:11px}#e>div>ol{float:left;margin:12px 25px 0 25px}#e>div>ol>li{float:left;display:block;width:70px;height:16px;padding-top:6px;padding-right:3px;box-shadow:inset 1px 1px 0 0 #474749,1px 1px 0 0 #6d6d70;text-shadow:1px 1px 0 #404042;text-align:center;line-height:9px;color:#b7b8bd;background:#4f4f51;cursor:default}#e>div>ol>li:first-child{width:54px;padding-left:5px;border-radius:11px 0 0 11px}#e>div>ol>li:last-child{width:57px;padding-right:3px;border-radius:0 11px 11px 0}#e>div>ol>li:only-child{width:60px;border-radius:11px;padding-right:5px}#e>div>ol>li.l{box-shadow:inset 0 1px 0 0 #808085,inset 1px 1px 0 0 #76767a,1px 1px 0 0 #5a5a5d;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#747478;background:#747478 linear-gradient(to bottom,#808085,#747478,#6c6c70,#6c6c70,#747478);cursor:pointer}#e>div>ol>li.l:hover{box-shadow:inset 0 1px 0 0 #43b6d7,inset 1px 1px 0 0 #40aac9,1px 1px 0 0 #5a5a5d;text-shadow:1px 1px 0 #3694af;background:#3ba2c0;background:#3ba2c0 linear-gradient(to bottom,#43b6d7,#3ea8c7,#3ba2c0,#3ba2c0,#3eaac9)}#e>div>ol>li.l:active{box-shadow:none;text-shadow:1px 1px 0 #307c92;background:#3798b4}#e>div>ol+ul{float:left;margin-right:22px;padding-left:1px;border-left:1px solid #565658;background:#767679;background:#767679 linear-gradient(to bottom,#88888b,#767679,#6a6a6d,#6a6a6d,#6f6f72)}#e>div>ol+ul>li{float:left;width:108px;height:46px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{position:absolute;display:block;width:106px;height:28px;margin-left:-2px;margin-right:1px;padding-top:18px;padding-left:1px;border-left:1px solid #474749;border-right:1px solid #4f4f51;text-align:center;text-decoration:none;text-shadow:1px 1px 0 #404042;line-height:9px;color:#b7b8bd;background:#4f4f51;z-index:2;cursor:default}#e>div>ol+ul>li>a.m{margin-left:0;padding-left:0;border-left:0;border-right:1px solid #565658;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#6a6a6d;background:#6a6a6d linear-gradient(to bottom,#79797c,#6a6a6d,#626265,#626265,#6b6b6e);cursor:pointer;z-index:0}#e>div>ol+ul>li>a.m:hover{padding-left:0;margin-left:-1px;border-left:1px solid #4dbfe1;border-right:1px solid #5b5b5e;text-shadow:1px 1px 0 #307c92;color:#fff;background:#3ba2c0;background:#3ba2c0 linear-gradient(to bottom,#43b6d7,#3ea8c7,#3ba2c0,#3ba2c0,#3eaac9)}#e>div>ol+ul>li>a.m:active{margin-left:-1px;border-left:1px solid #3798b4;border-right:1px solid #5b5b5e;text-shadow:1px 1px 0 #307c92;color:#fff;background:#3798b4}#e>div>ol+ul>li>div{display:none;position:fixed;max-height:80%;max-height:calc(98%-65px);max-width:600px;margin-top:46px;margin-left:-2px;padding:9px 12px 0 12px;box-shadow:0 5px 20px 0 #303031;border-radius:0 0 5px 5px;background:#4f4f51;overflow:auto;overflow-x:hidden;z-index:1}#e>div>ol+ul>li>div>:last-child{padding-bottom:14px}#e>div>ul+ul{float:right;margin-top:12px;margin-right:15px}#e>div>ul+ul>li{float:left;margin-left:10px}#e>div>p{float:right;margin-top:18px;margin-right:15px}#e>div>p samp{display:none;height:14px;font-family:Verdana;font-size:11px;line-height:9px;color:#fe8787;text-shadow:1px 1px 0 #545456;white-space:nowrap}#e>div>p samp a{line-height:9px;color:#adc8fe;cursor:pointer}#e>div>p samp:before{float:left;margin-right:5px;font-family:textolite;content:'\0803';font-size:14px;color:#e37b7b}#e>div>p samp+samp{display:block}#e>div>p samp.b{padding-left:7px;color:#75e375;animation:b 100ms infinite linear}#e>div>p samp.b:before{content:''}#e>div>p samp.b~i{float:left;display:block;margin-top:-14px;margin-left:-14px;font-style:normal;line-height:9px;color:#75e375;text-shadow:1px 1px 0 #545456;animation:a 2s infinite linear}samp.b~i:before{content:'\0800';font-family:textolite;font-size:14px}#e>div>p samp.c{color:#75e375}#e>div>p samp.c:before{content:'\0801';font-size:16px;color:#75e375}#e>div>p samp.n{color:#ead77a}#e>div>p samp.n:before{margin-top:1px;color:#d5c470}#e>div>p samp.d:before{content:'\0802';font-size:16px}#e>div>p samp.o{color:#ead77a}#e>div>p samp.o:before{content:'\0814';font-size:16px;color:#ead77a}#e>div>p samp.p{color:#ead77a}#e>div>p samp.p:before{content:'\0803';font-size:16px;color:#ead77a}#e>div>p samp.o b{font-style:normal;vertical-align:-1px;line-height:9px;color:#fe8787;cursor:pointer}#e>div>p samp.o b:hover{color:#ffbaba}#e>div>p samp.l b:hover{color:#cb7a7a}#e>div>p samp.o b:before{content:'\0802';font-family:textolite;font-size:14px}#e>div>p samp.q{color:#b7b8bd}#e>div>p samp.q:before{content:''}#e>div>p samp.q a{line-height:9px;color:#b7b8bd;cursor:pointer}#e>div>p samp.q a:hover{color:#adc8fe}#f{width:460px}#f>ol{height:0;margin-top:20px;margin-bottom:4px;border-top:1px solid #444446;border-bottom:1px solid #59595c}#f>ol li{margin-top:-21px;color:#b7b8bd;text-shadow:1px 1px 0 #3f3f41}#f>ol li+li{float:right;padding-right:152px}#f>ol li+li+li{padding-right:49px}#f>ol li+li+li+li{padding-right:1px}#f ul>li ul{display:none}#f ul>li ul>li{margin-top:-5px;padding-top:5px;padding-left:18px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAACCAMAAACwlnamAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDY5Qjk3RDZEOEVCMTFFM0I4M0JCRTY4RDY3RDc2RUMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDY5Qjk3RDVEOEVCMTFFM0I4M0JCRTY4RDY3RDc2RUMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIyM0RBM0NBNzFGRDExRTM4NUQ2QTA5MjA1MTVDMTlFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIyM0RBM0NCNzFGRDExRTM4NUQ2QTA5MjA1MTVDMTlFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+s8AzgAAAAAZQTFRFPz9Bt7i9CU8frAAAABBJREFUeNpiYEQFDGgAIMAAAYgAEEnYB58AAAAASUVORK5CYII='),url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAOCAMAAAAyqj1tAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkQzNDQ4MkVEOEVCMTFFMzk1NjVEODQyQTAxMENDODUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkQzNDQ4MkREOEVCMTFFMzk1NjVEODQyQTAxMENDODUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE0NkExNjQ3NzFGRDExRTNCMTY0QjQ0RkI4M0ZEN0VDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE0NkExNjQ4NzFGRDExRTNCMTY0QjQ0RkI4M0ZEN0VDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WBTqSQAAAAZQTFRFPz9Bt7i9CU8frAAAABBJREFUeNpiYGRgIA4BBBgAAVcADwiaAcYAAAAASUVORK5CYII=');background-position:7px 15px,6px 2px;background-repeat:no-repeat,repeat-y}#f ul>li ul>li:last-child{background-position:6px 15px,6px 2px;background-repeat:no-repeat,no-repeat}#f ul ol li{position:relative;max-width:300px;text-shadow:1px 1px 0 #3f3f41;color:#b7b8bd;white-space:nowrap;overflow:hidden}#f ul ol li+li{float:right;margin-top:-20px;padding-right:152px;padding-left:8px;background:#4f4f51}#f ul ol li+li+li{padding-right:49px}#f ul ol li+li+li+li{padding-right:0}#f ul ol li:first-child:before{float:left;font-family:textolite;font-size:16px;color:#ead77a}#f ul ol.r li:first-child:before{margin-right:3px;content:'\0804'}#f ul ol.r li.s:first-child:before{margin-right:1px;content:'\0805'}#f ul ol.t li:first-child:before{margin-left:1px;margin-right:6px;content:'\0808';font-size:14px;color:#d6d6db}#f ul ol li.u{color:#98df88}#f ul ol li.v{color:#7fba71}#f ul ol li.w{color:#fe8787}#f ul ol li a{text-shadow:1px 1px 0 #3f3f41;cursor:pointer}#f ul ol li.b a{animation:b 100ms infinite linear}#f ul ol.r li.x:before{color:#8b8048}#f ul ol.t li.x:before{color:#8e8e92}#f ul ol li.x a,#f ul ol li.x a:hover{text-decoration:none;color:#b7b8bd;cursor:default}#f ul ol.t li.p:before{content:'\0810';font-size:18px;color:#8e8e92}#f ul ol li.p a,#f ul ol li.p a:hover{text-decoration:none;color:#b7b8bd;cursor:default}#f ul ol li i{float:left;display:block;width:16px;height:16px;margin-top:2px;margin-left:2px;line-height:15px;font-style:normal;text-shadow:1px 1px 0 #3f3f41;text-align:center;cursor:pointer}#f ul ol.r li i:before{content:'\0809';font-family:textolite;font-size:16px;color:#75e375}#f ul ol.r li i:hover:before{color:#a1ffa1}#f ul ol.r li i:active:before{color:#77b577}#f ul ol.r li i.x{cursor:default}#f ul ol.r li i.x:before{color:#6a6a6d}#f ul ol.t li i:before{content:'\0802';font-family:textolite;font-size:16px;color:#fe8787}#f ul ol.t li i:hover:before{color:#ffbaba}#f ul ol.t li i:active:before{color:#cb7a7a}#f ul ol.t li i.x{cursor:default}#f ul ol.t li i.x:before{color:#6a6a6d}#f ul ol.t li i+i{display:none}#f ul ol.t li i:first-child+i:before{content:'\0801';font-family:textolite;font-size:15px;color:#65cdea}#f ul ol.t li i:first-child+i:hover:before{color:#9eeaff}#f ul ol.t li i:first-child+i:active:before{color:#60aabe}#f ul ol.t li i+i+i:before{color:#65cdea}#f ul ol.t li i+i+i:hover:before{color:#9eeaff}#f ul ol.t li i+i+i:active:before{color:#60aabe}#f ul ol.t.y li:first-child a{text-decoration:none;color:#fe8787;cursor:default}#f ul ol.t.y li:first-child:before{color:#fe8787}#f ul ol.t.y li i{display:none}#f ul ol.t.y li i+i{display:block}#f ul ol.z.y+ul>li:last-child a{text-decoration:none;color:#fe8787;cursor:default}#f ul ol.z.y+ul>li:last-child li:first-child:before{color:#fe8787}#f ul ol.z.y li i{display:none}#f ul ol.z.y li i+i{display:block}#g{width:460px}#g fieldset{min-width:290px;margin-top:27px;padding-bottom:1px;margin-bottom:-6px;border-radius:5px}#g fieldset:first-child{margin-top:23px}#g legend{float:left;margin-top:-14px;padding-left:12px;line-height:11px;color:#fff;cursor:pointer}#g legend:before{float:left;content:'\0816';font-family:textolite;font-size:12px;margin:1px 0 -10px -10px;color:#ddd}#g legend:hover,#g legend:hover:before{color:#adc8fe}#g legend:active,#g legend:active:before{color:#a6c0e1}#g fieldset.s{margin-bottom:0;border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c}#g fieldset.s legend{margin-top:-15px;padding-left:11px}#g fieldset.s legend:before{content:'\0817';margin-left:-12px}#g fieldset.s+p{margin-top:14px}#g dl{display:none;padding:0 10px 0 11px}#g dt{height:21px;padding-top:10px;padding-right:80px;line-height:19px;overflow:hidden;cursor:default}#g dt:first-child{margin-top:4px}#g fieldset:first-child+fieldset+fieldset+fieldset+fieldset dt:first-child{padding-right:160px}#g .d{color:#fe8787}#g .d+dd input[type="text"]{color:#fe8787}#g dd{position:relative;float:right;height:22px;margin-top:-22px;padding-left:9px;background-color:#4f4f51}#g dd:first-child{clear:both;float:none;margin-top:9px;padding-left:0}#g dd+dd{clear:both;float:none;margin-top:9px;padding-left:0}#g dd>input[type="text"]{float:right;width:66px}#g fieldset:first-child dt:first-child+dd input,#g fieldset:first-child+fieldset+fieldset+fieldset+fieldset dt:first-child+dd input{float:right;width:145px}#g dd input[type="checkbox"],#g dd input[type="radio"]{display:none}#g dd label{float:left;display:block;margin-right:10px;line-height:22px;text-shadow:1px 1px 1px #38383a}#g dd label input[type="checkbox"]+em,#g dd label input[type="radio"]+em{position:relative;float:left;display:block;width:10px;height:10px;margin-top:3px;margin-right:9px;padding:3px;border:1px solid #38383a;border-bottom-color:#5c5c5e;border-right-color:#555557;border-left-color:#3c3c3e;border-radius:5px;font-style:normal;background-color:#434345;cursor:default}#g dd label input[type="checkbox"]:checked+em:before,#g dd label input[type="radio"]:checked+em:before{float:left;margin-left:-4px;font-family:textolite;content:'\0801';font-size:17px;line-height:9px;text-shadow:1px 1px 1px #38383a;color:#6fd86f}#g dd:first-child{margin-top:12px}#g dd:last-child{margin-bottom:14px}#g dd:last-of-type{margin-bottom:14px}#g dd a{position:relative;float:right;display:block;width:18px;width:18px;margin-top:1px;margin-right:-148px;font-size:16px;color:#5c5c5e;text-shadow:1px 1px 0 #38383a;cursor:pointer}#g dd a:hover{color:#65cdea;text-decoration:none}#g dd a:active{color:#60aabe}#g dd a:before{font-family:textolite;content:'\0806'}#g dd a.e:before{content:'\0807'}#g dd ul{float:right;margin-right:2px;margin-left:-9px;max-width:440px}#g dd ul>li{float:left;display:block;width:34px;height:17px;padding-top:5px;border:1px solid #3c3c3e;border-bottom-color:#434345;border-right-color:#434345;box-shadow:inset 1px 1px 0 0 #434345,1px 1px 0 0 #5c5c5e;text-shadow:1px 1px 0 #38383a;text-align:center;line-height:9px;color:#b7b8bd;background:#434345;cursor:default}#g dd ul>li:first-child{border-radius:5px 0 0 5px}#g dd ul>li:last-child{border-radius:0 5px 5px 0}#g dd ul>li:only-child{border-radius:5px}#g dd ul>li.l{border:1px solid #444446;border-right:0;padding-right:1px;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #5e5e61;color:#fff;background:#4f4f51;cursor:pointer}#g dd ul>li.l:last-child{border-right:1px solid #444446;padding-right:0}#g dd ul>li.l:hover{border-top-color:#4f4f51;border-left-color:#4f4f51;border-bottom-color:#4f4f51;box-shadow:inset 1px 1px 0 0 #3faece,1px 1px 0 0 #4f4f51;text-shadow:1px 1px 0 #307c92;background:#3798b4}#g dd ul>li.l:last-child:hover{border-right-color:#4f4f51}#g dd ul>li.l:active{border-color:#4f4f51;border-right-color:#444446;box-shadow:inset 1px 1px 0 0 #3187a0,1px 1px 0 0 #4f4f51;text-shadow:1px 1px 0 #307c92;background:#3187a0}#g dt:last-child{display:none;position:relative;float:right;height:auto;width:100%;margin-top:-47px;padding-right:0;overflow:visible}#g dt ol{clear:both;float:right;min-width:302px;margin-bottom:6px}#g dt ol li{display:none;clear:both;max-height:31px}#g dt ol li span{display:block;float:left;width:50px;margin-top:2px;margin-right:5px;text-align:right}#g dt ol li span:after{content:'.'}#g dt ol li input{float:left;width:66px;margin-bottom:6px;margin-right:6px;color:#b7b8bd;text-shadow:1px 1px 0 #38383a}#g dt ol li input+input{width:198px;margin-right:0}#g dl ol li.p input{color:#606062;animation:none !important}#g dt ol li.p+li span+input{animation:c 5000ms infinite linear}#g dt ol li.p+li span+input+input{animation:d 5000ms infinite linear}#g dt ol li.p i{display:block;float:left;height:16px;width:7px;margin-top:3px;margin-left:-214px;border-top:1px solid #38383a;border-bottom:1px solid #5c5c5e;border-left:1px solid #434345;border-right:1px solid #434345;border-radius:5px 5px 0 0;background-color:#434345}#g dt ol li.p i:before{float:left;margin-left:-2px;font-family:textolite;content:'\0810';font-size:16px;line-height:16px;font-style:normal;color:#505052;text-shadow:1px 1px 0 #3c3c3e}#g dt ol+p{display:none;clear:both;margin-bottom:12px}#g dt ol+p strong{font-weight:normal}#g dt ol+p+p{display:none;position:relative;float:left;margin-bottom:-39px;margin-left:-11px;margin-top:16px}#g dt ol+p+p input{position:relative;float:left;margin-right:10px}#g>p{clear:both;margin:18px 0 0 1px}#g>p input[type="button"][disabled],#g>p input[type="button"][disabled]:hover,#g>p input[type="button"][disabled]:active{border:1px solid #444446;box-shadow:1px 1px 0 0 #59595c,inset 1px 1px 0 0 #59595c;text-shadow:1px 1px 0 #3f3f41;color:#737376;background:#4f4f51;cursor:default}#g>p a{display:block;float:right;width:15px;margin-top:-16px;cursor:default}#g>p a,#g>p a:hover,#g p a:active{color:#414143;text-shadow:1px 1px 0 #5c5c5e;text-decoration:none}#g p a:before{content:'\0818';font-family:textolite;font-size:14px}#g>p a.l{color:#eee;text-shadow:1px 1px 0 #38383a;cursor:pointer}#g>p a.l:hover{color:#adc8fe}#g>p a.l:active{color:#a6c0e1}@media(max-width:1400px){#e>div{width:96%}#e>div>ol{margin-left:15px;margin-right:15px}#e>div>ol>li:first-child{width:49px}#e>div>ol>li:last-child{width:52px}#e>div>ol>li:only-child{width:55px}#e>div>ol+ul{margin-right:12px}#e>div>ol+ul>li{width:95px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:93px}#e>div>div+ul{margin-left:-12px}#e>div>div+ul input[type="button"]{width:85px}#c body>div:first-child{width:98%}}@media(max-width:1200px){#b>body>samp{width:450px;margin-left:-225px;font-size:33px;line-height:25px}#b>body>samp span{height:125px;margin-top:-63px;font-size:125px;line-height:125px;letter-spacing:-7px}}@media(max-width:900px){#e>div>ol+ul>li>div{padding-left:11px}#e>div>p samp{position:fixed;top:46px;left:0;width:100%;padding:12px 0 8px 0;box-shadow:0 5px 20px 0 #303031;text-shadow:1px 1px 0 #3f3f41;background:rgba(69,69,71,0.9);z-index:999999}#e>div>p samp:before{text-indent:10px}#e>div>ol+ul>li>div{left:0;margin-left:0;border-radius:0 0 5px 0}}@media(max-width:700px){#e>div>ol{margin-left:8px;margin-right:8px}#e>div>ol>li:first-child{width:40px}#e>div>ol>li:last-child{width:43px}#e>div>ol>li:only-child{width:46px}#e>div>ol+ul{margin-right:6px}#e>div>ol+ul>li{width:83px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:81px}#e>div>div+ul{margin-right:3px}#e>div>div+ul input[type="button"]{width:78px}#c body>div:first-child ol{width:39px;margin-right:-49px;font-size:14px}#c body>div:first-child li{margin-left:56px}#c pre{border-left-width:49px;font-size:14px}}@media(max-width:600px){#e>div>div:first-child{display:none}#e>div>ol+ul>li>div{width:100%;height:93%;max-height:none;max-width:none;padding-left:0;padding-right:0;border-radius:0}@media(max-height:800px){#e>div>ol+ul>li>div{height:91%}}@media(max-height:650px){#e>div>ol+ul>li>div{height:89%}}@media(max-height:530px){#e>div>ol+ul>li>div{height:87%}}@media(max-height:400px){#e>div>ol+ul>li>div{height:83%}}@media(max-height:320px){#e>div>ol+ul>li>div{height:79%}}#e>div>ol+ul>li>div{height:calc(100%-65px)}#e>div>div+ul>li{margin-left:7px}#e>div>div+ul input[type="button"]{width:45px}#f>ol{min-width:278px;margin-left:12px;margin-right:12px}#f>ul{min-width:278px;padding:0 12px}#g fieldset{margin-left:11px;margin-right:11px}#g p{padding-bottom:12px;margin-left:11px}#b>body>samp{width:250px;margin-left:-125px;font-size:16px;line-height:12px}#b>body>samp span{height:62px;margin-top:-31px;font-size:62px;line-height:62px;letter-spacing:-3px}}@media(max-width:400px){#e>div>ol>li:first-child{width:32px}#e>div>ol>li:last-child{width:35px}#e>div>ol>li:only-child{width:38px}#e>div>ol+ul{margin-right:3px}#e>div>ol+ul>li{width:59px}#e>div>ol+ul>li>a,#e>div>ol+ul>li>a:hover,#e>div>ol+ul>li>a:active{width:57px;overflow:hidden}#e>div>ol+ul>li:last-child>a,#e>div>ol+ul>li:last-child>a:hover,#e>div>ol+ul>li:last-child>a:active{text-align:left;text-indent:5px}#e>div>ol+ul>li:last-child>a:before,#e>div>ol+ul>li:last-child>a:hover:before,#e>div>ol+ul>li:last-child>a:active:before{position:relative;float:right;margin-right:-4px;margin-bottom:-10px;content:'\2022';font-size:22px;text-shadow:none;color:#4f4f51}#e>div>ol+ul>li:last-child>a.m:before{color:#626265}#e>div>ol+ul>li:last-child>a.m:hover:before{color:#3ba2c0}#e>div>ol+ul>li:last-child>a.m:active:before{color:#3798b4}#f>ol li:first-child+li{display:none}#f ul ol li:first-child+li{display:none}#c body>div:first-child ol{display:none}#c pre{border-left:0}}@-moz-document url-prefix(){input[type="button"]{line-height:16px}#a p samp.d:before{margin-top:0}#a p+p+p input{line-height:17px}#g dd label{line-height:21px}#a p+p a{margin-top:-25px}#g dd a{margin-top:0}#g dd label input[type="checkbox"]:checked+span:before,#g dd label input[type="radio"]:checked+span:before{line-height:8px}} \ No newline at end of file diff --git a/admin/textolite.js b/admin/textolite.js new file mode 100644 index 0000000..544f818 --- /dev/null +++ b/admin/textolite.js @@ -0,0 +1 @@ +/* Textolite v2.12s */ (function(){var _1=window,_2=document,_3=location,_a='setInterval',_b='setTimeout',_c='clearInterval',_d='clearTimeout',_e='encodeURIComponent',_f='getComputedStyle',_g='addEventListener',_h='removeEventListener',_i='getAttribute',_j='setAttribute',_k='removeAttribute',_l='querySelectorAll',_m='querySelector',_n='removeChild',_o='appendChild',_p='cloneNode',_q='insertNode',_r='insertBefore',_s='createElement',_t='createTextNode',_u='firstElementChild',_v='lastElementChild',_w='nextElementSibling',_x='previousElementSibling',_y='nextSibling',_z='parentNode',_A='contentWindow',_B='activeElement',_C='documentElement',_D='childNodes',_E='indexOf',_F='lastIndexOf',_G='toLowerCase',_H='charCodeAt',_I='toFixed',_J='toString',_K='substring',_L='replace',_M='search',_N='match',_O='slice',_P='split',_Q='join',_R='getSelection',_S='addRange',_T='createRange',_U='removeAllRanges',_V='getRangeAt',_W='setStart',_X='setEnd',_Y='collapse',_Z='tagName',a_='nodeType',b_='className',c_='clientHeight',d_='disabled',e_='checked',f_='length',g_='style',h_='value',i_='innerHTML',j_='outerHTML',k_='textContent',l_='getResponseHeader',m_='setRequestHeader',n_='preventDefault',o_='stopPropagation',p_='dataTransfer',q_='keyCode',r_='display',s_='opacity',t_='overflow',u_='position',v_='height',w_='width',x_='cssFloat',y_='textIndent',z_='paddingTop',A_='paddingLeft',B_='marginTop',C_='marginLeft',D_='marginRight',E_='none',F_='block',G_='hidden',H_='absolute',I_='DOMContentLoaded',J_='click',K_='focus',L_='blur',M_='mousemove',N_='mousedown',O_='mouseup',P_='keydown',Q_='keyup',R_='change',S_='input',T_='resize',$='data-',$a='textolite',$b=$a+'_check',$c=$a+'_update',$d=$a+'_install',$e=$a+'_not_install',$f=$a+'_activate',$g=$a+'_token',$h=$a+'_state',$i=$a+'_settings',$j=$a+'_recovery',$k=$a+'_scripts',$l=$+$a+'-string',$m=$+$a+'-focus',$n=$+$a+'-disabled',$r='system=',$s='&token=',$t='&version=',$u='&final=',$v='&beta=',$x='&settings[',$C='img',$D='src',$E='caret',$F='script',$G='iframe',$H='textarea',$I='1){while(a--)if(b.a[a]==k)delete b.a[a]}else delete b.a;_1[_c](k);if(h)h.call(b)}},10);if(!b.a)b.a=[k];else b.a[b.a[f_]]=k},ae=function(c,d){if(_1[_f](c)[r_]==E_){c[g_][s_]='0';c[g_][r_]=F_;ad(c,0,1,400,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){c[g_][s_]=b[_I](1)},function(){c[g_][s_]='';if(d)d.call(c)})}},af=function(c,d){if(c[g_][t_]!=G_&&_1[_f](c)[r_]!=E_){ad(c,1,0,300,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){c[g_][s_]=b[_I](1)},function(){c[g_][r_]=E_;c[g_][s_]='';if(d)d.call(c)})}},ag=function(i,j){if(_1[_f](i)[r_]==E_){i[g_][s_]='0';i[g_][u_]=H_;i[g_][r_]=F_;var k=i[c_],l=parseInt(_1[_f](i)[z_]);i[g_][v_]='0';i[g_][u_]='';i[g_][t_]=G_;i[g_][C_]='-'+_1[_f](i[_u])[A_];if(l){k=k-l;ad(i,0,l,200,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){i[g_][z_]=b[_I](0)+'px'})}ad(i,0,k,200,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){i[g_][v_]=d[_I](0)+'px'});ad(i,parseInt(i[g_][C_]),0,400,function(e){return((-Math.cos(e*Math.PI)/2)+0.5)},function(f){i[g_][C_]=f[_I](0)+'px'});ad(i,0,1,600,function(g){return((-Math.cos(g*Math.PI)/2)+0.5)},function(h){i[g_][s_]=h[_I](1)},function(){i[g_][v_]='';i[g_][C_]='';i[g_][z_]='';i[g_][s_]='';i[g_][t_]='';if(j)j.call(i)})}},ah=function(i,j){if(i[g_][t_]!=G_&&_1[_f](i)[r_]!=E_){var k=i[c_],l=parseInt(_1[_f](i)[z_]);i[g_][t_]=G_;if(l){k=k-l;ad(i,l,0,400,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){i[g_][z_]=b[_I](0)+'px'})}ad(i,i[c_],0,420,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){i[g_][v_]=d[_I](0)+'px'},function(){i[g_][r_]=E_;i[g_][s_]='';i[g_][C_]='';i[g_][v_]='';i[g_][t_]='';if(j)j.call(i)});ad(i,0,parseInt('-'+_1[_f](i[_u])[A_]),400,function(e){return((-Math.cos(e*Math.PI)/2)+0.5)},function(f){i[g_][C_]=f[_I](0)+'px'});ad(i,1,0,200,function(g){return((-Math.cos(g*Math.PI)/2)+0.5)},function(h){i[g_][s_]=h[_I](1)})}},ai=function(e,f){if(_1[_f](e)[r_]==E_){e[g_][s_]='0';e[g_][u_]=H_;e[g_][r_]=F_;var g=e[c_];e[g_][v_]='0';e[g_][u_]='';e[g_][t_]=G_;ad(e,0,g,150,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){e[g_][v_]=b[_I](0)+'px'});ad(e,0,1,300,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){e[g_][s_]=d[_I](1)},function(){e[g_][v_]='';e[g_][s_]='';e[g_][t_]='';if(f)f.call(e)})}},aj=function(e,f){if(e[g_][t_]!=G_&&_1[_f](e)[r_]!=E_){var g=e[c_];e[g_][t_]=G_;ad(e,e[c_],0,200,function(a){return((-Math.cos(a*Math.PI)/2)+0.5)},function(b){e[g_][v_]=b[_I](0)+'px'},function(){e[g_][r_]=E_;e[g_][s_]='';e[g_][v_]='';e[g_][t_]='';if(f)f.call(e)});ad(e,1,0,150,function(c){return((-Math.cos(c*Math.PI)/2)+0.5)},function(d){e[g_][s_]=d[_I](1)})}},ak=function(a){var b,c,d='';c=String.fromCharCode;a=a[_L](new RegExp('\r\n','g'),'\n');for(b=0;b127)&&(e<2048)){d+=c((e>>6)|192);d+=c((e&63)|128)}else{d+=c((e>>12)|224);d+=c(((e>>6)&63)|128);d+=c((e&63)|128)}}return d},al=function(g){var h=function(a,b){return(a<>>(32-b))},i=function(c){var d,e,f='';for(d=7;d>=0;d--){e=(c>>>(d*4))&0x0f;f+=e[_J](16)}return f},j,k,l,m,n,o,p,q,r,s,t,u,v=0x67452301,w=0xEFCDAB89,x=0x98BADCFE,y=0x10325476,z=0xC3D2E1F0;g=ak(g);n=g[f_];j=new Array();u=new Array(80);for(l=0;l>>29);j.push((n<<3)&0x0ffffffff);for(k=0;kj){j=event.loaded;_1[_d](h);e.call(g,j,event.total)}else h=i()};e.call(g,0,0)}g.send(a)},ao=function(){return al(new Date().getTime()+''+Math.floor(Math.random()*2147483648))},ap=function(a){var b=1024,c=1024*b,d=1024*c,e=1024*d;if(a0)m[d_]=false;else m[d_]=true},x=function(){if(!m[d_]){n[K_]();n[d_]=true;m[d_]=true;p[i_]=p[_i]($+'ax');p[b_]='b';ae(p);y(n[h_],n[_i]($+'ay'),200,z)}},y=function(b,c,d,e){var f=0,g=al(al(b)[_K](0,22)+b),h=_1[_a](function(){for(var a=f+d;f3&&j[_E](i[1])===0&&j[_P]('.')[f_]>2)_3.href=_3.protocol+'//'+j[_O](i[1][f_]+1)+p[_i]($+'bA');else _3.reload(true)}else _3.reload(true)},function(){n[d_]=false;n[K_]();n[_g](S_,w);p[b_]='d';if(!this[l_]('X-a')){p[i_]=p[_i]($+'cj');t=t*1+1;q[_j]($+'cg',t);if(t>=s)_3.reload(true);else q[_o](q[_u])[b_]='a'}else{w.call(n);p[i_]=p[_i]($+'al')}},function(){n[d_]=false;n[K_]();n[_g](S_,w);p[i_]=p[_i]($+'ak');p[b_]='d'})};for(var A=0;A=(s-t))B[b_]='a';q[_o](B)}if(_3.href[_E](_1[_e](p[_i]($+'bA'))[_P]('%2F')[_Q]('/'))===-1){p[b_]='d';ae(p)}else if(m[h_][_E]('{')!==-1){p[i_]='Problem with parse_ini_file';p[b_]='d';ae(p)}q[g_][r_]=F_;n[K_]();o.title=o[_i]($+'bp');o[_g](N_,u);m[_g](J_,x);n[_g](S_,w);n[_g](P_,v)}});_2[_g](I_,function(){var da=_2[_m]('#e');if(da){var db=da[_m]('div>div+ol li:first-child'),dc=da[_m]('div>div+ol li+li'),dd=da[_m]('div>ul+ul li:first-child input'),de=da[_m]('div>ul+ul li:last-child input'),df=da[_m]('div>ul+ul+p samp'),dg=da[_l]('div>ol+ul>li>a'),dh=_2[_m]('#j'),di=dh[i_],dj=function(){var ga=function(a){var b=[],c=a[_D];for(var d=0,e=c[f_];d]','gi'))){var f=gz[_A][_R](),h=f[_V](0),e=_2[_s]($E);h[_q](e);a[i_]=a[i_][_P]($K)[_Q]('{!caret!}')[_L](new RegExp('<.*?>','gi'),'')[_P]('{!caret!}')[_Q]($K+' ');e=a[_l]($E);if(e[f_]){var g=e[0][_y],h=gA[_T]();h[_W](g,0);h[_X](g,0);h[_Y](true);f[_U]();g[k_]=g[k_][_O](1);e[0][_z][_n](e[0]);f[_S](h)}}},gc=function(){var a=false;if(di!=dh[i_])a=true;else{var b=gA[_l]('['+$l+']');for(var c=0,d=b[f_];c'+d+'<'),g=f[f_]-1;if(g){if(g==1){di=f[_Q]('>'+e+'<');dh[i_]=di;a[b].B=e}else{var h=gA[_l]('['+$l+']');for(var i=0,j=0,k=false,l=h[f_];i'+d+'<'),q=f[_O](k+1)[_Q]('>'+d+'<');di=p+'>'+e+'<'+q;dh[i_]=di;a[b].B=e}}}}}}}return gx(di)},gh=function(b){var c=false;b=b[_L](new RegExp('&(#?[a-z0-9]{2,8});','gi'),'{%~$1~%}');b=b[_P]('&')[_Q]('&amp;');b=b[_P]('{%~amp~%}')[_Q]('&amp;');b=b[_L](new RegExp('{%~(lt|gt|nbsp)~%}','gi'),'&$1;');b=b[_L](new RegExp('{%~(#?[a-z0-9]{2,8})~%}','gi'),'&$1;');b=b[_P](' ')[_Q]('&nbsp;');b=b[_L](new RegExp('<([^a-z/])','gi'),'&lt;$1');b=b[_L](new RegExp('[<>]','gi'),function(a){if(a=='<'){if(c)return'&lt;';else c=true}else{if(!c)return'&gt;';else c=false}return a});var d=_2[_s]($H),e=_2[_s]('div');e[i_]='­';if(e[i_]=='­')b=b[_P]('­')[_Q]('&shy;');d[i_]=b[_P]($H)[_Q]('_extarea');return d[h_][_P]('_extarea')[_Q]($H)},gi=function(a){var b=gk(a);if(b[f_]){b[0][_j]($m,true);if(a[_i](d_)){b[0][_j]($n,true);df[b_]='n';gy();if(df[g_][r_]==F_){_1[_b](function(){ae(df)},400)}else ae(df)}}},gj=function(){var a=gA[_m]('['+$m+']');if(a){a[_k]($m);if(gA[_B])gA[_B][L_]();if(df[g_][r_]==F_&&(df[_u]||df[i_]==df[_i]($+'bj')))af(df)}},gk=function(a){var b=[];for(var c=a[_z],d;c;c=c[_z]){var e=c[_Z];if(e&&e[_G]()!='body'){var f=_1[_f](c)[r_][_G]();if(f!='inline'&&f!=E_){for(var g=false,h=c[_x];h;h=h[_x]){var e=h[_Z][_G]();if(e!=$F&&e!='style'){g=c;break}}if(g)b[b[f_]]=g;else{for(var i=c[_w];i;i=i[_w]){var e=i[_Z][_G]();if(e!=$F&&e!='style'){b[b[f_]]=c;break}}}if(!d)d=c}}else break}if(!b[f_]&&d)b[b[f_]]=d;return b},gl=function(a){var b=a.B;if(!b)return a[i_];return b},gm=function(a){var b=di[_P](a);if(!gh.fixed){var c=gh(di),d=c[_P](a);if(b[f_]!=d[f_]){di=c;if(dh[i_]!=di)dh[i_]=di;b=d;gh.fixed=true}}return b},gn=function(){var a=this,b=function(){gb(a);gc()},c=function(){b.call(a);gA[_h](M_,c);_1[_b](function(){if(gA[_B]==a)gA[_g](M_,c)},500)},d=function(event){a[_h](Q_,b);gA[_h](M_,c);a[_h](L_,d);a[_g](N_,gn)};a[_g](Q_,b);gA[_g](M_,c);a[_g](L_,d);a[_h](N_,gn);if(!a.B)a.B=a[i_];go.call(a)},go=function(){gj();gi(this)},gp=function(event){var a=event.target,b=gA[_m]('['+$m+']');for(var c=a;c;c=c[_z])if(c==b)return;gj()},gq=function(event){if(event[q_]==13){event[n_]();ZZ();gj()}else if(event[q_]==17)gq.i=true;else if(event[q_]==83&&gq.i){event[n_]();if(!dd[d_]){ZZ();gj();dl(gg())}}},gr=function(event){if(event[q_]==17)gq.i=false},gs=function(event){event[n_]();event[o_]()},gt=function(){var b=ga(gA.body),c=gA[_l]('a'),d=_2[_m]('#i')[i_],e=_2[_s]('style');e[i_]=d;gA.head[_o](e);gA[_g](N_,ds);var f=gh(di);for(var g=0,h=b[f_];g'+j+'<')[f_]-1;for(var m=0,n=0;m')[_Q]('?~~-->');c=c[_L](new RegExp(']*?)*?>','gi'),'');var d=(df[_i]($+'bv')*1),e=(df[_i]($+'bw')*1);if(!d)c=c[_L](new RegExp($I+'[\\s\\S]+?/script>','gi'),'');if(!e){c=c[_L](new RegExp('','gi'),'');c=c[_L](new RegExp(']+?>','gi'),'')}if(c[_N](new RegExp(']*?)*?>)','gi'),'$1'+b);else c=b+c;return c},gw=function(a){gx.o=[],gx.p=[];gx.q=[];gx.r=[];a=a[_P]('')[_Q]('?~~-->');a=a[_L](new RegExp('^[\\s\\S]+?(?:|]>|]>)','gi'),function(str1){if(!gx.o[f_]){gx.o[gx.o[f_]]=str1;return'{!~head'+(gx.o[f_]-1)+'~!}'}else return str1});a=a[_L](new RegExp('|<_cript[\\s\\S]+?/_cript>','gi'),function(str1){if(str1[_E]('')[_Q]('?>')},gy=function(){if((df[_i]($+'bv')*1)){df[i_]=df[_i]($+'bk')+' ('+df[_i]($+'bm')+')';var b=df[_u];if(b){b[_g](J_,function(){var a=ao();aa($g,a);df[i_]=df[_i]($+'bn');df[b_]='b';_1[_c](df.a);df[g_][s_]='';an('scripts=1'+$s+a,function(){aa($k,1);_3.href=_3.href[_L](_3.hash,'')},function(){df[b_]='d';df[i_]=df[_i]($+'ai')},function(){df[b_]='d';df[i_]=df[_i]($+'ak')})})}}else df[i_]=df[_i]($+'bj')},gz=_2[_m]($G),gA=gz[_A].document,gB=di;di=gw(gB);dh[i_]=di;db[_g](J_,function(){if(dd[d_])dm();else dm(gg())});db[b_]='l';_1[_g](T_,gu);gu();var gC=ac($k);if(gC){ab($k);df[i_]=df[_i]($+'bo');df[b_]='c';ae(df)}gA.open();gA.write(gv(gB));gA.close();_1[_g]('load',function(){gt()});dd[_g](J_,function(){if(!dd[d_])dl(gg())});if(_1.opera){var gD=_2[_s]('span');gD[g_][x_]='right';gD[g_][B_]='50px';gD[g_][y_]='-9999px';gD[i_]='.';da[_o](gD)}},dk=function(){var K=_2[_m]('pre'),L=_2[_m]('ol'),M=L[_i]($+'cl'),N='|if|else|function|return|true|false|null|new|for|do|while|switch|case|break|continue|try|catch|throw|instanceof|',O=function(a){return a[_P]('')[_Q]('>')[_P]('<caret>·</caret>')[_Q]($K)[_P]('\n')[_Q]($N)},P=function(b){b=b[_L](new RegExp('.*?(?:
|$)','gi'),'
$&
');if(_1.opera)b=b[_L](new RegExp('
(?:(?:'+$L+'[a-z]>)*'+$K+'(?:'+$M+')*)
','gi'),'
'+$K+$N+'
');return b},Q=function(c){return c[_L](new RegExp('([^>](?:'+$M+')*|[^>])','gi'),'$1
')[_P]($N)[_Q]('\n')[_P]($K)[_Q]('<caret>·</caret>')[_L](new RegExp('<.*?>','gi'),'')[_P]('<')[_Q]('<')[_P]('>')[_Q]('>')[_P]('&')[_Q]('&')[_P]($J)[_Q](''+e[_P]($N)[_Q](''+$M+$N+$L+'j>')+''+$M+'"'})[_L](new RegExp('\'(.+?)\'','gi'),function(str21,f){return'\''+$L+'j>'+f[_P]($N)[_Q](''+$M+$N+$L+'j>')+$M+'\''});return $L+'f>'+str1[_P]($N)[_Q](''+$M+$N+$L+'f>')+$M})[_L](new RegExp('&#?[a-z0-9]{2,7};','gi'),$L+'f>$&'+$M+'')[_L](new RegExp('(?:'+$L+'[a-z]>)*<script.+?</script>','gi'),function(str1){return $L+'h>'+str1[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*<style.+?</style>','gi'),function(str1){return $L+'i>'+str1[_P]($N)[_Q](''+$M+$N+$L+'i>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*<!--.*?-->','gi'),function(str1){return $L+'g>'+str1[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M}))}}else if(K[b_]=='css'){R=function(g){return P(O(g[_P](';')[_Q]('!~!'))[_L](new RegExp('[^{}]+(?={)','gi'),function(str1){return $L+'f>'+str1[_P]($N)[_Q](''+$M+$N+$L+'f>')+$M})[_L](new RegExp('{[^{]*?}','gi'),function(str1){str1=str1[_L](new RegExp('".+?"|\'.+?\'','gi'),function(str11){return str11[_P]('!~!')[_Q]('!#~!')})[_L](new RegExp('((?:!~!|{)(?: |\t|
|)*)([a-z-]+(?: |\t|
|)*)(?=:)','gi'),'$1'+$L+'g>$2'+$M+'')[_L](new RegExp(':(.+?)(?=!~!|})','gi'),function(str31,h){return':'+$L+'h>'+h[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M})[_P]('!#~!')[_Q]('!~!');return $L+'j>'+str1[_P]($N)[_Q](''+$M+$N+$L+'j>')+$M})[_L](new RegExp('(?:'+$L+'[a-z]>)*/[*].*?[*]/','gi'),function(str1){return $L+'i>'+str1[_P]($N)[_Q](''+$M+$N+$L+'i>')+$M})[_P]('!~!')[_Q](';'))}}else if(K[b_]=='js'){R=function(i){return P(O(i)[_L](new RegExp('([^a-z0-9_$<]|^)([a-z]{2,10})(?=[^a-z0-9_$>])','gi'),function(str1,j,k){if((N+'var|this|delete|nan|undefined|typeof|in|with|label|void|')[_E]('|'+k+'|')!==-1)return j+$L+'f>'+k+$M;else return str1})[_L](new RegExp('([^a-z0-9_$])(-?[0-9]+(?:\.[0-9]+)*%?)(?=[^a-z0-9_$])','gi'),'$1'+$L+'j>$2'+$M+'')[_L](new RegExp('"(|.*?(?:[^\\\\]|[\\\\][\\\\]))"|\'(|.*?(?:[^\\\\]|[\\\\][\\\\]))\'|(/[*].*?[*]/)|(//.*?(?=
|$))','gi'),function(str1,j,k,l,m){if(j)return'"'+$L+'h>'+j[_P]($N)[_Q](''+$M+$N+$L+'h>')+''+$M+'"';else if(k)return'\''+$L+'h>'+k[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M+'\'';else if(l)return $L+'g>'+l[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else if(m)return $L+'g>'+m[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else return str1}))}}else if(K[b_]=='php'){R=function(n){return P(O(n)[_L](new RegExp('(<[?](?:php)?)(.*?)([?]>)','gi'),function(str1,o,p,q){p=p[_L](new RegExp('([^a-z0-9_$<]|^)([a-z]{2,10})(?=[^a-z0-9_$>])','gi'),function(str1,o,p){if((N+'foreach|as|require|include|require_once|include_once|elseif|endif|endswitch|class|public|private|protected|final|static|abstract|extends|interface|implements|use|const|global|or|and|xor|clone|namespace|trait|yield|declare|goto|')[_E]('|'+p+'|')!==-1)return o+$L+'f>'+p+$M;else return str1})[_L](new RegExp('([^a-z0-9_$])(-?[0-9]+(?:\.[0-9]+)*%?)(?=[^a-z0-9_$])','gi'),'$1'+$L+'j>$2'+$M+'')[_L](new RegExp('"(|.*?(?:[^\\\\]|[\\\\][\\\\]))"|\'(|.*?(?:[^\\\\]|[\\\\][\\\\]))\'|(/[*].*?[*]/)|((?://|#).*?(?=
|$))','gi'),function(str1,o,p,q,r){if(o)return'"'+$L+'h>'+o[_P]($N)[_Q](''+$M+$N+$L+'h>')+''+$M+'"';else if(p)return'\''+$L+'h>'+p[_P]($N)[_Q](''+$M+$N+$L+'h>')+$M+'\'';else if(q)return $L+'g>'+q[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else if(r)return $L+'g>'+r[_P]($N)[_Q](''+$M+$N+$L+'g>')+$M;else return str1});return $L+'i>'+o+$M+p+$L+'i>'+q+$M}))}}var S=function(){var s='',t=0,u=K[_l]('div'),v=u[f_]-1;while(t1){K.g.pop();K[i_]=K.g.pop()[_P]($K)[_Q]($K+' ');var G=K[_l]($E);if(G[f_]){var H=_1[_R](),I=G[0][_y],J=_2[_T]();J[_W](I,0);J[_X](I,0);J[_Y](true);H[_U]();I[k_]=I[k_][_O](1);G[0][_z][_n](G[0]);H[_S](J)}}}else if(event[q_]==83&&Y.i){event[n_]();hb();if(!dd[d_])dl(V())}},Z=function(event){if(!X.k)X(event);_2[_h](M_,Z);Z.k=_1[_b](function(){if(_2[_B]==K)_2[_g](M_,Z)},500)},hb=function(){T();_2[_h](Q_,X);_2[_h](P_,Y);_2[_h](M_,Z);_1[_d](Z.k);_1[_d](X.k);K[_h](L_,hb)},hc=function(){_2[_g](Q_,X);_2[_g](P_,Y);_2[_g](M_,Z);K[_g](L_,hb);if(!K.A){K.A=al(K[i_]);K.h=K.A}K.g=[K[i_]]},hd=function(){S();_2.body[g_][v_]=_2[_C][c_]-da[c_]+'px'};_1[_g](T_,hd);hd();if(!(K[_i]($+'cn')*1)){R=O;S=function(){};U=function(){}}if(dc){dc[_g](J_,function(){if(dd[d_])dm();else dm(V())});dc[b_]='l'}K[i_]=R(Q(R(dh[i_])));S();K[_g](K_,hc);K[K_]();dd[_g](J_,function(){if(!dd[d_]){hb();dl(V())}})},dl=function(d){var e=ao();aa($g,e);df[i_]=df[_i]($+'ac');df[b_]='b';ae(df);dd[d_]=true;ZZ();an('save='+_1[_e](am(d)[_P]('a')[_Q]('_'))+$s+e,function(){var a=_3.href[_L](_3.hash,'')[_L](df[_i]($+'bA')[_O](df[_i]($+'bA')[_O](0,-1)[_F]('/')+1),'');if(!a[_N](new RegExp('\.php$','gi'))){var b=_2[_s]($G);b[_j]($D,a);b[g_][r_]=E_;b.onload=function(){b.onload=function(){b.onload=false;_2.body[_n](b)};b[_A].location.reload(true)};_2.body[_o](b)}var c=da[_m]('#f>ul>li>ul');if(c)c[i_]='';df[i_]=df[_i]($+'ad');df[b_]='c';if(de[h_]==de[_i]($+'ab'))dn()},function(){dd[d_]=false;dd[K_]();df[b_]='d';if(this[l_]('X-a'))df[i_]=df[_i]($+'al');else df[i_]=df[_i]($+'ai')},function(){dd[d_]=false;dd[K_]();if(this.status==403)df[i_]=df[_i]($+'aj');else df[i_]=df[_i]($+'ak');df[b_]='d'})},dm=function(a){var b=_2[_s]('form'),c=_2[_s](S_);c.name='switch';if(_2[_C].id=='c')c[h_]=0;else c[h_]=1;b[_o](c);if(a){var d=_2[_s]($H),e=_2[_s](S_);d.name='source';d[h_]=am(a)[_P]('a')[_Q]('_');e.name='token';e[h_]=ao();aa($g,e[h_]);b[_o](e);b[_o](d)}b.method='post';b[g_][r_]=E_;_2[_C][_o](b);b.submit()},dn=function(){df[i_]=df[_i]($+'af');df[b_]='b';ae(df);an('logout=1',function(){df[i_]=df[_i]($+'ag');df[b_]='c';var a=_3.href[_L](_3.hash,'');if(df[_i]($+'bx')*1)a=a[_L](df[_i]($+'bA')[_O](df[_i]($+'bA')[_O](0,-1)[_F]('/')+1),'');_3.href=a},function(){df[i_]=df[_i]($+'ai');df[b_]='d'},function(){df[i_]=df[_i]($+'ak');df[b_]='d'})},ZZ=function(){var a=_2[_s](S_);a[g_][C_]='-2000px';da[_o](a);a[K_]();da[_n](a)},dp=function(){if(ac($b)){var b=$r+_1[_e](_3.hostname[_L]('www.','')+df[_i]($+'bA')[_O](0,-1))+$t+df[_i]($+'cc')+$u+df[_i]($+'cd')+$v+df[_i]($+'ce');an(b,function(a){ab($b,df[_i]($+'bA'));aa($c,a,3,df[_i]($+'bA'));dq(a)},function(){ab($b,df[_i]($+'bA'))},function(){},function(){},aq())}else{var c=ac($c);if(c){var d=ac($d);if(d){ab($c,df[_i]($+'bA'));ab($d,df[_i]($+'bA'));df[i_]=df[_i]($+'au');df[b_]='c';ae(df);aa($b,1,false,df[_i]($+'bA'));dp()}else dq(c)}}},dq=function(a){var b=parseInt(a);if(b>0){var c=ac($e);if(!c||c!=a){df[i_]=df[_i]($+'an')+' '+a+' ('+df[_i]($+'ap')+') ';df[b_]='o';ae(df);dr();var d=df[_v];if(d){d[_g](J_,function(){af(df);aa($e,a,60*24*90,df[_i]($+'bA'))})}}}else if(b==-1){aa($c,a,false,df[_i]($+'bA'));df[i_]=df[_i]($+'ao')+' ('+df[_i]($+'ap')+')';df[b_]='p';ae(df);dr()}else if(a[f_]>20){ab($c,df[_i]($+'bA'));df[i_]=a;df[b_]='q';ae(df)}},dr=function(){var e=df[_u];if(e){e[_g](J_,function(){df[i_]=df[_i]($+'ar');df[b_]='b';var d=$r+_1[_e](_3.hostname[_L]('www.','')+df[_i]($+'bA')[_O](0,-1))+$t+df[_i]($+'cc')+$u+df[_i]($+'cd')+$v+df[_i]($+'ce');an(d,function(b){df[i_]=df[_i]($+'as');var c=ao();aa($g,c);an('install='+_1[_e](b[_P]('a')[_Q]('_'))+$s+c,function(a){aa($d,1,false,df[_i]($+'bA'));if(a&&a[_K](a[f_]-5)=='.html')_3.href=a;else _3.href=_3.href[_L](_3.hash,'')},function(){df[i_]=df[_i]($+'at');df[b_]='d'},function(){if(this.status==403)df[i_]=df[_i]($+'aj');else df[i_]=df[_i]($+'ak');df[b_]='d'})},function(){df[i_]=df[_i]($+'ai');df[b_]='d'},function(){df[i_]=df[_i]($+'aw');df[b_]='d'},function(){},aq(1))})}},ds=function(event){var a=event.target;for(var b=a;b;b=b[_z])if(b[b_]=='A')return;for(var c=0,d=dg[f_];c'+df[_i]($+'ah')+')';df[b_]='n';ae(df);var a=df[_u];if(a)a[_g](J_,function(){_3.reload(true)})},function(){df[i_]=df[_i]($+'ak');df[b_]='n';ae(df)})},1000*60*dv);de[d_]=false;if(dh[_i]($+'ck'))dd[d_]=false;if(df[_i]($+'bz')==df[_i]($+'by')||(df[_i]($+'bz')[_K](0,3)=='127'&&df[_i]($+'by')[_K](0,3)=='127'))an.m=true;if(_2[_C].id=='c')dk();else if(_2[_C].id=='d')dj();dp()}});_2[_g](I_,function(){var da=_2[_m]('#e'),db=_2[_m]('#f');if(da&&db){var dc=da[_m]('div>ul+ul+p samp'),dd=da[_m]('div>ol+ul>li>a'),de=db[_m]('li>ol'),df=de[_u][_u][_i]($+'cp'),dg=_3.pathname[_O](df[f_]),dh='';if(_3.pathname==dc[_i]($+'bA')&&_3[_M][_E]('?q=')===0){dg=df+_3[_M][_O](3);dh=_3[_M]}else dg=df+dg[_O](dg[_E]('/')+1);var di=function(b){var c=b[_w],d=b[_u][_u],e=d[_i]($+'cp'),f=function(){var a=dg[_O](e[f_])[_E]('/');if(a!=-1){d=d[_z][_z][_w][_m]('[data-cp="'+dg[_O](0,a+e[f_]+1)+'"]');if(d)di(d[_z][_z])}else{d=d[_z][_z][_w][_m]('[href="'+_3.pathname+dh+'"]');if(d)d[_z][b_]='x'}};if(c[_u]){if(_1[_f](c)[r_]==E_){d.l=function(){d.l=function(){};f()};_1[_b](function(){dk.call(d)},0)}else f()}else{d.l=function(){d.l=function(){d.l=function(){};f()};dk.call(d)};dj.call(d)}},dj=function(){var h=this,i=h[_z],j=i[_z],k=h[_i]($+'cp');i[b_]='b';an('open='+_1[_e](k),function(a){var b=j[_w];b[i_]=a;var c=b[_l]('li>ol');for(var d=0,e=c[f_];d9)g[b_]='w'}},function(){i[b_]='';h[_g](J_,dj);dc[i_]=dc[_i]($+'ai');dc[b_]='d';ae(dc)},function(){i[b_]='';h[_g](J_,dj);dc[i_]=dc[_i]($+'ak');dc[b_]='d';ae(dc)});h[_h](J_,dj)},dk=function(){var a=this,b=a[_z],c=b[_z][_w],d=function(){a[_g](J_,dl);b[b_]='s';a.l()};if(c[_u])ag(c,d);else d();a[_h](J_,dk)},dl=function(){var a=this,b=a[_z],c=b[_z][_w],d=function(){a[_g](J_,dk);b[b_]=''};if(c[_u])ah(c,d);else d();a[_h](J_,dl)},dm=function(a){var b=a[_u],c=b[_w],d=c[_w],e=a[_v][_u],f=b[_u],g=f[_i]($+'cp'),h=dc[_i]($+'bA');dn(c);ZZ(d);if(a[b_]=='r'){f.l=function(){f.l=function(){};dk.call(f)};f[_g](J_,dj);if(h&&g[_O](0,h[f_])==h)e[b_]='x';else e[_g](J_,dq)}else{var i=a[_z][_z][_x][_u][_u][_i]($+'cp');if(h&&i&&i[_O](0,h[f_])==h){b[b_]='p';e[b_]='x'}else{if(h&&g[_O](0,h[f_])!==h)f[_j]('target','_blank');f.href=g;e[_g](J_,dt)}}},dn=function(a){var b=a[_i]($+'cq');if(b)a[i_]=ap(b*1);if(b[f_]>9)a[b_]='w'},ZZ=function(a){var b=a[i_]*1000,c=new Date(b),d=new Date().getTime(),e=24*60*60*1000,f=e*7;if((d-b)b)dc[i_]=dc[_i]($+'bf')+' ('+ap(b)+')';else dc[i_]=dc[_i]($+'bf')+' ('+ap(a)+')';dc[b_]='n';ae(dc)}}else{dc[i_]=dc[_i]($+'be')+' ('+c+')';dc[b_]='n';ae(dc)}});h[K_]();h[J_]()}else{dc[i_]=dc[_i]($+'am');dc[b_]='n';ae(dc)}},dr=function(p){var q=new FormData(p),r=ao(),s=p[_z][_z][_u][_u][_i]($+'cp'),t=dc[_i]($+'az');q.append('upload',_1[_e](s));q.append('token',r);aa($g,r);dc[i_]=t+' (0%)';dc[b_]='b';ae(dc);an(q,function(a){var b=p[_z][_z],c=b[_w],d=b[_u],e=d[_w],f=_2[_s]('div');f[i_]=a;if(f[_u]&&f[_u][_Z][_G]()=='li'){if(c[_u]){var g=false;while(g=f[_u]){var h=g[_m]('a'),i=c[_l]('a');if(h&&i[f_]){var j=h[_i]($+'cp');for(var k=0,l=i[f_];k9)e[b_]='w'}dr.v+=p.size;if(this[l_]('X-c'))ds(3);else if(this[l_]('X-d'))ds(2);else ds(0)}else{if(this[l_]('X-c'))ds(3);else ds(2)}},function(){ds(2)},function(){ds(1)},function(n,o){if(dc[i_][_E]('(')!=-1)dc[i_]=t+' ('+((n+dr.v)*100/dr.w)[_I](1)+'%)'})},ds=function(a){if(typeof dr.u=='undefined'||dr.u9)c[b_]='w'}},function(){dc[b_]='d';e[g_][r_]=F_;if(this[l_]('X-c')){dc[i_]=dc[_i]($+'ai');k[b_]=k[b_][_L](' y','')}else dc[i_]=dc[_i]($+'bi')},function(){dc[i_]=dc[_i]($+'ak');dc[b_]='n';e[g_][r_]=F_})};k[b_]+=' y';j[_g](J_,function(){i[_h](J_,l);k[b_]=k[b_][_L](' y','')});i[_g](J_,l)};dm(de);dd[_g](N_,function(){if(this[_w][g_][r_]!=F_)di(de)})}});_2[_g](I_,function(){var da=_2[_m]('#e'),db=_2[_m]('#g');if(da&&db){var dc=da[_m]('div>ol+ul>li+li>a'),dd=db[_m]('dd a'),de=db[_l]('fieldset'),df=db[_l]('legend'),dg=db[_m]('input[type="password"]'),dh=db[_l]('dd input[type="text"]'),di=db[_l]('input[type="radio"]'),dj=db[_l]('input[type="checkbox"]'),dk=db[_m]('fieldset+p input[type="button"]'),dl=db[_m]('p a'),dm=da[_m]('div>ul+ul+p samp'),dn=function(){if(this[b_]){this[_x].type='password';this[b_]='';this.title=dm[_i]($+'bp')}else{this[_x].type='text';this[b_]='e';this.title=dm[_i]($+'bq')}},ZZ=function(){var a=false,b=false,c=false;if(dg[h_][f_]>0&&dg[h_]!=dg.b)b=true;for(var d=0,e=dh[f_];d=')||exit('PHP '.PHP_VERSION.' is not supported');define('a_','document_root');define('b_','query_string');define('c_','request_uri');define('d_','php_self');define('e_','http_accept_language');define('f_','http_user_agent');define('g_','remote_addr');define('h_','server_addr');define('i_','script_filename');define('j_','script_name');define('k_','server_name');define('l_','server_protocol');define('m_','lang');define('n_','password');define('o_','session');define('p_','pass_complexity');define('q_','pass_complexity_js');define('r_','auth_time');define('s_','auth_error_time');define('t_','auth_error_list');define('u_','auth_error_limit');define('v_','auth_lockout_duration');define('w_','auth_session_reset');define('x_','auth_bot_filter');define('y_','code_redraw_delay');define('z_','code_undo_limit');define('A_','code_highlighting');define('_s','visual_ext');define('B_','allowed_ext');define('C_','editable_ext');define('D_','default_file');define('_Q','folder_size');define('E_','document_root');define('F_','url_rewrite');define('G_','logout_to_site');define('K_','site_scripts');define('L_','site_styles');define('M_','update_final');define('N_','update_beta');define('O_','cache');define('_r','filelist');define('P_','system_url');define('Q_','error_limit');define('R_','error_count');define('S_','redraw_delay');define('T_','mode');define('U_','type');define('V_','base');define('W_','code');define('X_','title');define('Y_','version');define('Z_','is_edited');define('_a','post_max_size');define('_b','upload_max_filesize');define('_c','max_file_uploads');define('_d','_checkbox');define('_m','http_ajax');define('_n','source');define('_o','token');define('_p','sha1');define('_q','html');define('_t','404');define('_u','403');define('_v','ip');define('_w','sip');define('_x','url');define('_y','name');define('_z','date');define('_A','size');define('_B','list');define('_C','file');define('_D','error');define('_E','value');define('_F','radio');define('_G','tmp_name');define('_H','language_list');define('_I','');define('_N','');define('__','textolite_');final class a{private $a;private $b;public function __construct(){$this->a['a']=$_GET;$this->a['b']=$_POST;$this->a['c']=$_SERVER;$this->a['d']=$_COOKIE;$this->a['e']=$_FILES;}public function a($a){if(isset($this->b['a'][$a]))return $this->b['a'][$a];else if(isset($this->a['a'][$a]))return $this->b['a'][$a]=$this->f($this->a['a'][$a],$a);}public function b($a=false){if($a){if(isset($this->b['b'][$a]))return $this->b['b'][$a];else if(isset($this->a['b'][$a]))return $this->b['b'][$a]=$this->f($this->a['b'][$a],$a);}else if(count($this->a['b']))return true;}public function c($a){if(isset($this->b['c'][$a]))return $this->b['c'][$a];else{$b=strtoupper($a);if(isset($this->a['c'][$b]))return $this->b['c'][$a]=$this->f($this->a['c'][$b],$a);}}public function d($a){if(isset($this->b['d'][$a]))return $this->b['d'][$a];else if(isset($this->a['d'][$a]))return $this->b['d'][$a]=$this->f($this->a['d'][$a],$a);}public function e($a){if(isset($this->a['e'][$a]))return $this->a['e'][$a];}private function f($a,$b){$c='_'.$b;if(method_exists($this,$c))return $this->$c($a);else return $a;}private function _server_protocol($a){preg_match('~^[a-z]{4,5}/[0-9]\.[0-9]$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _server_name($a){preg_match('~^[a-z0-9-_.]{2,300}$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _script_filename($a){$b=str_replace('\\','/',__FILE__);if(stripos($b,$this->a['c'][strtoupper(a_)])===0)return $b;else return str_replace('\\','/',$a);}private function _document_root($a){$a=str_replace('\\','/',$a);$b=$this->c(i_);$c=$this->c(d_);$d=$this->c(j_);if(stripos($b,$c)>0)$e=str_ireplace($c,'',$b);if(stripos($b,$d)>0)$f=str_ireplace($d,'',$b);if(isset($e)){if(isset($f)){if(strlen($e)>strlen($f))$g=$e;else$g=$f;}else$g=$e;}else if(isset($f))$g=$f;else$g=$a;if(stripos($b,$a)===0){if(strlen($g)>strlen($a))$a=$g;}else$a=$g;if(substr($a,-1)=='/')return substr($a,0,-1);return $a;}private function _php_self($a){return str_replace('\\','/',$a);}private function _script_name($a){return str_replace('\\','/',$a);}private function _query_string($a){return str_replace('\\','/',$a);}private function _remote_addr($a){return $this->_ip($a);}private function _server_addr($a){return $this->_ip($a);}private function _ip($a){preg_match('~^[a-z0-9.:]{1,40}$~i',$a,$b);if(isset($b[0]))return $b[0];}private function _sha1($a){preg_match('~^[a-z0-9]{40}$~i',$a,$b);if(isset($b[0]))return $b[0];}}final class b{private $a;private $b;private $c;private $d;public function __construct($a){$this->a=$a;$this->a('Content-type:text/html;charset=utf-8');}public function a($a){return $this->b[]=$a;}public function b($a,$b){return $this->b[]=$this->a.' '.$a.' '.$b;}public function c($a){return $this->b[]='Location:'.$a;}public function d($a,$b=false,$c=false,$d=false,$e=false,$f=false,$g=false){$h['a']=$a;$h['b']=$b;$h['c']=$g;$h['d']=(int)$c;$h['e']=str_replace('%2F','/',urlencode($d));$h['f']=$e;$h['g']=(int)$f;$this->c[]=$h;}public function e($a,$b=false,$c=false){$this->d($a,'',time()-60*60,$b,$c);}public function f($a){return $this->d=$a;}public function g(){if(isset($this->b))foreach($this->b as $a)header($a);if(isset($this->c))foreach($this->c as $b)setcookie($b['a'],$b['b'],$b['d'],$b['e'],$b['f'],$b['g'],$b['c']);if(isset($this->d))print $this->d;}}final class c{const a="\n";const b='lang.ini';const c='conf.ini';private $a;private $b;private $c;private $d;private $e;private $f;public function __construct($a,$b){$this->c=parse_ini_file($a.self::b,true);$this->d=parse_ini_file($a.self::c,true);$this->e=array('j'=>'
  1. {type}
  2. text
','i'=>'
  1. {type}
','h'=>'

Textolite v{version}

{standard}

{mode}
  • {files}
    1. {file_name}
    2. {file_size}
    3. {file_changed}
    4. {file_menu}
      {filelist}
  • {settings}
    {auth}
    {new_password}:
    {login_attempts}:
    {lockout_duration}:
    {session_autoreset}:
    {visual_editor}
    {source_editor}
    {redraw_delay}:
    {steps_for_undo}:
    {file_manager}
    {system}
    {main_page_or_file}:
    {language}:
      {language_list}
    {extended}
    {activate}:

    {attachment_domain} . {attachment_notice}

','a'=>'{auth} - Textolite
{auth}

{document_root_error}

{password}:

','e'=>'{code} - {{code}} - Textolite{code}{{code}}{panel}','c'=>'{title} - Textolite{panel}','d'=>'{title} - Textolite
    {panel}','n'=>'
    1. {name}
    2. {date}
    • ','b'=>'
      1. {name}
      2. {date}
    • ','m'=>'
    • {radio}{lang}
    • ','l'=>'','k'=>'','g'=>'','f'=>'');$this->a['a']=$a;$this->a['b']=$this->g(a_);if(!$this->a['b'])$this->a['b']=$b;$this->a['c']=str_ireplace($this->a['b'],'',$this->a['a']);$this->a['d']=$this->f($a);$this->a['e']=$this->f($this->a['c']);}public function __destruct(){if($this->f)$this->i();}public function a(){return $this->a['b'];}public function b(){return $this->a['a'];}public function c($a=false){return $this->a['c'];}public function d(){return $this->a['d'];}public function e(){return $this->a['e'];}public function f($a){if(substr_count($a,'/')>2)return dirname($a).'/';else return '/';}public function g($a,$b=false){if($b){if(isset($this->d[$b][$a]))return $this->d[$b][$a];}else if(isset($this->d[$a]))return $this->d[$a];}public function h($a,$b,$c=false){if($c){if(isset($this->d[$c])){$this->f=true;return $this->d[$c][$a]=$b;}}else{$this->f=true;return $this->d[$a]=$b;}}private function i(){foreach($this->d as $a=>$b)if(!is_array($b))$c[]=$a.' = '.$b.self::a.self::a;foreach($this->d as $a=>$b){if(is_array($b)){$c[]='['.$a.']'.self::a.self::a;foreach($b as $d=>$e)$c[]="\t".$d.' = '.$e.self::a;$c[]=self::a;}}if($f=fopen($this->a['a'].self::c,'w')){flock($f,LOCK_EX);fwrite($f,implode('',$c));flock($f,LOCK_UN);fclose($f);}}public function j(){return is_writable($this->a['a'].self::c);}public function k($a){if(isset($this->e[$a]))return $this->e[$a];}public function l($a,$b){foreach($b as $c=>$d)$a=str_ireplace('{'.$c.'}',$d,$a);return $a;}public function m($a,$b){preg_match_all('~\{([a-z0-9_]{2,30})\}~i',$a,$c);if($c[1]){$c[1]=array_unique($c[1]);foreach($c[1] as $d)if($e=$this->n($d,$b))$a=str_ireplace('{'.$d.'}',$e,$a);}return $a;}public function n($a,$b){if(isset($this->c[$b][$a]))return $this->c[$b][$a];}}final class d{const a='2.12s';private $a;private $b;private $c;private $d;private $e;public function __construct($a,$b,$c){$this->b=$a;$this->c=$b;$this->a=$c;$this->d=$this->g();$this->e=$this->h();}public function a(){$a=$this->b->d(__.o_,_p);if($a&&$a==$this->a->g(o_))$this->b();else{$b=time();$c=unserialize(urldecode($this->a->g(t_)));$d=$this->a->g(u_);$e=$this->b->c(g_);if($c&&isset($c[$e]))$f=$c[$e];else$f=0;if($this->b->b()&&$this->b->c(_m)){$g=$this->b->b(n_,_p);if($g&&($f<$d||$this->a->g(s_)+($this->a->g(v_)*60)<$b)){$h=$this->a->g(n_);$i=$this->a->g(q_)*1;$j=$this->a->g(p_)*1;$k=$j-$i;for($l=0;$l<$k;$l++)$g=sha1($g);if($h==$g){if($this->a->j()){$this->m();if(isset($c[$e])){unset($c[$e]);$this->a->h(t_,urlencode(serialize($c)));}if($i<5)$this->a->h(q_,15000);else$this->a->h(q_,$i-1);$this->a->h(r_,$b);$this->a->h(O_,'');}else{$this->c->a('X-a:1');$this->c->b(404,$this->a->n(_t,'en'));}}else{$this->a->h(s_,$b);$c[$e]=$f+1;$this->a->h(t_,urlencode(serialize($c)));$this->c->b(404,$this->a->n(_t,'en'));}}else$this->c->b(404,$this->a->n(_t,'en'));}else{if(!$this->a->g(x_)||$this->b->c(e_)&&$this->b->c(f_)&&preg_match('~Chrome|Firefox|Opera|Safari|AppleWebKit|Trident|MSIE~i',$this->b->c(f_))){if($f<$d||$this->a->g(s_)+($this->a->g(v_)*60)<$b){if($this->b->c(c_)===substr($this->a->c(),0,-1))throw new Exception($this->a->c(),307);$m[P_]=$this->a->c();$m[Q_]=$d;$m[R_]=$f;$m[p_]=$this->a->g(q_);$m[Y_]=self::a;$n=$this->a->k('a');$n=$this->a->l($n,$m);$n=$this->a->m($n,$this->d);$this->c->f($n);}else throw new Exception(false,403);}else throw new Exception(false,403);}}}public function b(){$aa=$this->b->a('q');$ab=$this->a->d().$aa;if(!$aa||!preg_match('~\.[a-z]{2,5}$~i',$aa)){if($this->b->c(i_)!=str_replace('\\','/',__FILE__))$this->k();$ac=$this->a->d().$this->a->g(D_);if(!file_exists($ac)&&($ad=$this->j()))throw new Exception($this->a->c().$this->i().$ad,307);else throw new Exception($this->a->c().$this->i().$this->a->g(D_),307);}if(stripos($aa,substr($this->a->c(),strripos(substr($this->a->c(),0,-1),'/')+1))===0)throw new Exception($this->a->c().$this->i().$this->a->g(D_),307);if($this->b->c(_m)){if($this->b->b('reload'))$this->m();else if($this->b->b('logout'))$this->n();else if(($ae=$this->b->b('save'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$ae=str_replace(_L,_K,base64_decode(str_replace('_','a',$ae)));$ae=str_replace(_J,_I,$ae);if($this->q(strtolower(substr($ab,strripos($ab,'.')+1)))){if(is_writable($ab)&&$ag=fopen($ab,'w')){flock($ag,LOCK_EX);fwrite($ag,$ae);flock($ag,LOCK_UN);fclose($ag);$this->a->h(O_,'');}else{$this->c->a('X-a:1');$this->c->b(404,$this->a->n(_t,'en'));}}else$this->c->b(404,$this->a->n(_t,'en'));}else if($ah=$this->b->b('open')){$ah=rawurldecode($ah);$this->c->f($this->w($ah));}else if(($ah=$this->b->b('upload'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$ah=rawurldecode($ah);$ai=$this->a->d().substr($ah,strlen($this->a->e()));$aj=$this->b->e(_C);if($ak=count($aj)&&is_dir($ai)){$al='';$am=$this->a->k('b');$an=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));foreach($aj[_G] as $ao=>$ap){if($this->q(strtolower(substr($aj[_y][$ao],strripos($aj[_y][$ao],'.')+1)))){if(!$aj[_D][$ao]){$ab=$ai.$aj[_y][$ao];move_uploaded_file($ap,$ab);$aq[_y]=$aj[_y][$ao];$aq[_z]=filemtime($ab);$aq[_A]=filesize($ab);preg_match('~\.(?:'.$an.')$~i',$aq[_y],$ar);if(isset($ar[0]))$aq[_x]=$this->a->c().$this->i().substr($ah,strlen($this->a->e())).$aq[_y];else$aq[_x]=$ah.$aq[_y];$al.=$this->a->m($this->a->l($am,$aq),$this->d);}else$as=true;}else$at=true;if(isset($al)){$this->a->h(O_,'');$this->c->a('X-b:'.$this->y($ah));$this->c->f($al);}if(isset($at))$this->c->a('X-c:1');else if(isset($as))$this->c->a('X-d:1');}}else$this->c->b(404,$this->a->n(_t,'en'));}else if(($au=$this->b->b('remove'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$au=rawurldecode($au);if($this->q(strtolower(substr($au,strripos($au,'.')+1)))){$au=str_replace($this->a->c(),$this->a->e(),$au);$ab=$this->a->d().substr($au,strlen($this->a->e()));if(is_file($ab)&&unlink($ab)){$this->a->h(O_,'');$this->c->a('X-b:'.$this->y(dirname($au).'/'));}else$this->c->b(404,$this->a->n(_t,'en'));}else{$this->c->a('X-c:1');$this->c->b(404,$this->a->n(_t,'en'));}}else if(($av=$this->b->b('settings'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);if($av[n_]){$aw=$this->a->g(n_);$ax=$this->a->g(p_)-$this->a->g(q_);for($ay=0;$ay<$ax;$ay++)$av[n_]=sha1($av[n_]);if($av[n_]!=$aw)$this->a->h(n_,$av[n_]);}if($av[m_]&&$av[m_]!=$this->d){if(stripos($az=$this->a->g(m_),',')&&stripos($az,$av[m_])!==false){if($av[m_]!=$this->b->c(e_))$this->c->d(__.m_,$av[m_],time()+60*60*24*365,$this->a->c(),false,false,true);else$this->c->e(__.m_,$this->a->c());}else$this->c->b(404,$this->a->n(_t,'en'));}if($this->a->g(D_)!==null&&preg_match('~^.{1,30}$~i',$av[D_],$ar)&&isset($ar[0]))$this->a->h(D_,$av[D_]);else$this->c->b(404,$this->a->n(_t,'en'));unset($av[n_],$av[m_],$av[D_]);foreach($av as $ao=>$aA){if($this->a->g($ao)!==null&&preg_match('~^[0-9]{1,7}$~i',$aA,$ar)&&isset($ar[0]))$this->a->h($ao,$aA);else$this->c->b(404,$this->a->n(_t,'en'));}}else if(($aB=$this->b->b('scripts'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);if($this->a->g(K_)!==null)$this->a->h(K_,'0');else$this->c->b(404,$this->a->n(_t,'en'));}else if(($aC=$this->b->b('install'))&&($af=$this->b->b(_o,_p))&&($af==$this->b->d(__._o,_p))){$this->c->e(__._o);$aD=$this->a->b().'update.php';preg_match('~^[a-z0-9+=/_]+$~i',$aC,$ar);if(isset($ar[0])&&($aC=base64_decode(str_replace('_','a',$aC)))&&($ag=fopen($aD,'w'))){flock($ag,LOCK_EX);$aE=fwrite($ag,$aC);flock($ag,LOCK_UN);fclose($ag);if($aE){$aq=include$aD;if($aq==_D)$this->c->b(404,$this->a->n(_t,'en'));else if(file_exists($this->a->d().$aq))$this->c->f($this->a->c().$this->i().$aq);unlink($aD);}else$this->c->b(404,$this->a->n(_t,'en'));}else$this->c->b(404,$this->a->n(_t,'en'));}else$this->c->b(404,$this->a->n(_t,'en'));}else{$this->m();if(file_exists($ab)){$aF=strtolower(substr($ab,strripos($ab,'.')+1));if($this->q($aF)){$aG=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));preg_match('~^'.$aG.'$~i',$aF,$ar);if(isset($ar[0])){$aH=$this->b->d(__._q);$aI=$this->b->b('switch');if($aH){if($aI==='0'){$this->c->e(__._q,$this->a->c());$this->c($ab);}else$this->d($ab);}else{if($aI==='1'){$this->c->d(__._q,1,time()+60*60*24*90,$this->a->c(),false,false,true);$this->d($ab);}else$this->c($ab);}}else$this->d($ab);}else$this->e(_u);}else$this->e(_t);}}public function c($a){$b[X_]=$this->a->n('visual_editor',$this->d);$b[P_]=$this->a->c();$b[Y_]=self::a;$b[V_]=$this->a->e();$c=$this->b->a('q');if($d=strripos($c,'/'))$b[V_].=substr($c,0,$d+1);$b['panel']=$this->r($a);$b[_n]=$this->o();if(!$b[_n]){$b[_n]=$this->p($a);$b[Z_]='';}else$b[Z_]='1';$b[_n]=str_replace('{','!~!',$b[_n]);$e=$this->a->k('c');$e=$this->a->l($e,$b);$e=$this->a->m($e,$this->d);$e=str_replace('!~!','{',$e);$this->c->f($e);}public function d($a){$b[X_]=$this->a->n('source_editor',$this->d);$b[P_]=$this->a->c();$b[Y_]=self::a;$b[S_]=$this->a->g(y_);$b[A_]=$this->a->g(A_);$b[z_]=$this->a->g(z_);$b['panel']=$this->r($a);$b[_n]=$this->o();if(!$b[_n]){$b[_n]=$this->p($a);$b[Z_]='';}else$b[Z_]='1';$b[_n]=str_replace('{','!~!',$b[_n]);$c=$this->a->k('d');$c=$this->a->l($c,$b);$c=str_replace('!~!','{',$c);$this->c->f($c);}public function e($a){$b[W_]=$a;$b[P_]=$this->a->c();$b[Y_]=self::a;$b['panel']=$this->r($a);$c=$this->a->k('e');$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}public function f($a){$this->c->b($a->getCode(),$this->a->n($a->getCode(),'en'));if($b=$a->getMessage())$this->c->c($b);$c[W_]=$a->getCode();$c[P_]=$this->a->c();$c[Y_]=self::a;$c['panel']='';$d=$this->a->k('e');$d=$this->a->l($d,$c);return $this->c->f($this->a->m($d,$this->d));}private function g(){$a=$this->a->g(m_);if(stripos($a,',')){$b=$this->b->d(__.m_);if($b&&stripos($a,$b)!==false)return $b;else{$c=substr($this->b->c(e_),0,2);if(stripos($a,$c)!==false)return $c;}}return substr($a,0,2);}private function h(){$a=$this->a->g(F_);if($a==='1')return 1;else if($a==='0')return 0;else{if((stripos($this->b->c(b_),'q=')===0)&&(stripos($this->b->c(c_),$this->b->c(b_))===false))return 1;else return 0;}}private function i(){if(!$this->e)return '?q=';else return '';}private function j(){$a=$this->a->d();if($b=opendir($a)){$c=array();$d=array();$e=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));$f=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));while(($g=readdir($b))!==false){if($g!='.'&&$g!='..'){if(is_file($a.$g)){if(preg_match('~^index\.(?:'.$e.')$~i',$g)){closedir($b);return $g;}else if(preg_match('~\.(?:'.$e.')$~i',$g))$c[]=$g;else if(preg_match('~\.(?:'.$f.')$~i',$g))$d[]=$g;}}}closedir($b);if(isset($c[0]))return $c[0];else if(isset($d[0]))return $d[0];}}private function k(){$a=$this->a->b().'.htaccess';if(file_exists($a)){$b=file_get_contents($a);preg_match('~RewriteBase (.+?)\n~i',$b,$c);if(isset($c[0])&&isset($c[1])){if($c[1]!=$this->a->c()){$b=str_replace($c[0],'RewriteBase '.$this->a->c()."\n",$b);$this->l($b);}}else{$b=preg_replace('~(RewriteEngine .+?\n)~i','$1'."\n".'RewriteBase '.$this->a->c()."\n",$b);$this->l($b);}}}private function l($a){if($b=fopen($this->a->b().'.htaccess','w')){flock($b,LOCK_EX);fwrite($b,$a);flock($b,LOCK_UN);fclose($b);}}private function m(){$a=sha1(time().mt_rand());$this->a->h(o_,$a);$this->c->d(__.o_,$a,time()+60*$this->a->g(w_),$this->a->c(),false,false,true);}private function n(){$this->a->h(o_,'');$this->c->e(__.o_,$this->a->c());}private function o(){$a=$this->b->b('switch');if(is_numeric($a)){$b=$this->b->b(_n);if($b&&($c=$this->b->b(_o))&&$c==$this->b->d(__._o)){$b=base64_decode(str_replace('_','a',$b));$this->c->a('X-e:0');$this->c->e(__._o);return $b;}}}private function p($a){$b=file_get_contents($a);preg_match('~]+utf-8~i',$b,$c);preg_match('~]+windows-1251~i',$b,$d);if(!isset($c[0])&&isset($d[0])){$b=preg_replace('~(]+)windows-1251~i','$1utf-8',$b);$b=iconv('Windows-1251','UTF-8',$b);}$b=str_replace(_K,_L,$b);return str_replace(_I,_J,$b);}private function q($a){$b=$this->a->g(B_);if(!$b||preg_match('~(?:^|,\s*)'.$a.'(?:\s*,|$)~i',$b))return true;}private function r($a){$b[T_]=$this->s($a);$b[_r]=$this->v();$b[P_]=$this->a->c();$b[Y_]=self::a;$b[_b]=$this->u(ini_get(_b));$b[_c]=ini_get(_c);$b[p_]=$this->a->g(q_);$b[u_]=$this->a->g(u_);$b[v_]=$this->a->g(v_);$b[w_]=$this->a->g(w_);$b[G_]=$this->a->g(G_);if($b[G_])$b[G_._d]=$this->a->k('f');else$b[G_._d]=$this->a->k('g');$b[K_]=$this->a->g(K_);if($b[K_])$b[K_._d]=$this->a->k('f');else$b[K_._d]=$this->a->k('g');$b[L_]=$this->a->g(L_);if($b[L_])$b[L_._d]=$this->a->k('f');else$b[L_._d]=$this->a->k('g');$b[y_]=$this->a->g(y_);$b[z_]=$this->a->g(z_);if($this->a->g(A_))$b[A_._d]=$this->a->k('f');else$b[A_._d]=$this->a->k('g');if($this->a->g(_Q))$b[_Q._d]=$this->a->k('f');else$b[_Q._d]=$this->a->k('g');$b[D_]=$this->a->g(D_);$b[M_]=$this->a->g(M_);if($b[M_])$b[M_._d]=$this->a->k('f');else$b[M_._d]=$this->a->k('g');$b[N_]=$this->a->g(N_);if($b[N_])$b[N_._d]=$this->a->k('f');else$b[N_._d]=$this->a->k('g');$b[_v]=$this->b->c(g_);$b[_w]=$this->b->c(h_);$b[_a]=$this->u(ini_get(_a));$b[_H]=$this->t();$c=$this->a->k('h');$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}private function s($a){if(is_numeric($a)){$b[U_]=$a;$c=$this->a->k('i');}else{$d=strtolower(substr($a,strripos($a,'.')+1));$e=str_replace(' ','',str_replace(',','|',$this->a->g(_s)));preg_match('~^'.$e.'$~i',$d,$f);if(isset($f[0]))$c=$this->a->k('j');else$c=$this->a->k('i');if($d=='htm')$b[U_]=_q;else$b[U_]=$d;}$c=$this->a->l($c,$b);return $this->a->m($c,$this->d);}private function t(){$a='';$b=explode(',',$this->a->g(m_));$c[_y]=m_;foreach($b as $d){$c[_E]=trim($d);if($this->d==$c[_E])$e=$this->a->k('k');else$e=$this->a->k('l');$f[_F]=$this->a->l($e,$c);$f[m_]=$c[_E];$g=$this->a->k('m');$g=$this->a->l($g,$f);$a.=$this->a->m($g,$this->d);}return $a;}private function u($a){$a=strtolower(trim($a));$b=(int)$a;switch($a[strlen($a)-1]){case'm':return $b*1048576;case'k':return $b*1024;case'g':return $b*1073741824;default:return $b;}}private function v(){$a=$this->a->e();$b=$this->a->d();if($a=='/')$c[_y]=$this->b->c(k_);else$c[_y]=substr($a,strrpos(substr($a,0,-1),'/')+1,-1);$c[_z]=filemtime($b);$c[_x]=$a;$c[_A]='';$d=$this->a->k('n');$d=$this->a->l($d,$c);return $this->a->m($d,$this->d);}private function w($a){$b=$this->a->d().substr($a,strlen($this->a->e()));$c=array();$d=array();$e=str_replace(' ','',str_replace(',','|',$this->a->g(C_)));if($f=opendir($b)){while(($g=readdir($f))!==false){if($g!='.'&&$g!='..'){$h=array();$h[_y]=$g;$h[_z]=filemtime($b.$g);if(is_file($b.$g)){preg_match('~\.(?:'.$e.')$~i',$g,$i);if(isset($i[0]))$h[_x]=$this->a->c().$this->i().substr($a,strlen($this->a->e())).$g;else$h[_x]=$a.$g;$h[_A]=filesize($b.$g);$d[]=$h;}else if(is_dir($b.$g)&&!is_link($b.$g)){$h[_x]=$a.$g.'/';$h[_A]=$this->y($h[_x]);$c[]=$h;}}}closedir($f);}$j='';if(count($c)){$c=$this->x($c);$k=$this->a->k('n');foreach($c as $l){$m=$k;$j.=$this->a->m($this->a->l($m,$l),$this->d);}}if(count($d)){$d=$this->x($d);$n=$this->a->k('b');foreach($d as $o)$j.=$this->a->m($this->a->l($n,$o),$this->d);}if($b==$this->a->d())$this->c->a('X-b:'.$this->y($a));return $j;}private function x($a){$b=array();$c=array();foreach($a as $d)$b[]=$d[_y];asort($b);foreach($b as $e)foreach($a as $d)if($e==$d[_y])$c[]=$d;return $c;}private function y($a){if($this->a->g(_Q)){$b=$this->a->g(O_);if(!$b){$b=$this->z($this->a->e());$this->a->h(O_,urlencode(serialize($b)));}else$b=unserialize(urldecode($b));return $b[$a];}else return '';}private function z($a){$b=$this->a->d().substr($a,strlen($this->a->e()));$c=array();$c[$a]=0;if($d=opendir($b)){while(($e=readdir($d))!==false){if($e!='.'&&$e!='..'){if(is_file($b.$e))$c[$a]+=filesize($b.$e);else if(is_dir($b.$e.'/')&&!is_link($b.$e)){$f=$this->z($a.$e.'/');$c[$a]+=$f[$a.$e.'/'];$c=array_merge($c,$f);}}}closedir($d);}return $c;}}$a=new a();$b=new b($a->c(l_));$c=new c(dirname($a->c(i_)).'/',$a->c(a_));$d=new d($a,$b,$c);try{$d->a();}catch(Exception$e){$d->f($e);}$b->g();?> \ No newline at end of file diff --git a/css/style.css b/css/style.css index 428c85d..398b6e7 100644 --- a/css/style.css +++ b/css/style.css @@ -1,5 +1,7 @@ * { box-sizing: border-box; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + -webkit-tap-highlight-color: transparent; } h1, h2, h3, h4, h5, p { @@ -11,6 +13,8 @@ body { font-weight: 400; color: #183b56; margin: 0; + position: static; + overflow-y: auto; } img { @@ -41,6 +45,27 @@ a { outline: none; } +.input--error:invalid { + color: red; +} + +.input--error:valid { + color: #183b56; +} + +.input-wrapper { + position: relative; + margin-bottom: 6px; + height: 70px; +} + +.invalid { + bottom: 4px; + position: absolute; + color: red; + font-size: 12px; +} + .button { font-style: normal; font-weight: bold; @@ -53,6 +78,14 @@ a { background-color: #ffffff; } +.hold { + overflow-y: clip; +} + +#recommend, #books, #blog { + scroll-behavior: smooth; +} + /* Document ========================================================================== */ /** @@ -410,22 +443,26 @@ template { .header__menu-nav { display: flex; - width: 252px; justify-content: space-between; margin-right: 63px; padding: 0; list-style: none; } -.header__menu-nav-item { +.header__menu-item { font-style: normal; font-weight: 600; font-size: 16px; line-height: 22px; margin: 0; + margin-right: 24px; padding: 0; } +.header__menu-item:last-child { + margin-right: 0; +} + .header__button { padding: 11px 32px 11px 32px; font-style: normal; @@ -468,15 +505,16 @@ template { .main__wrapper { display: flex; justify-content: space-between; + align-items: center; } .main__info { width: 585px; - margin-top: 14px; } .main-title { width: 445px; + margin-top: -10px; margin-bottom: 28px; font-family: Roboto Condensed; font-weight: bold; @@ -545,12 +583,13 @@ template { } .books { - padding: 50px 0 76px; + padding: 50px 0 0px; } .books__wrapper { + padding-bottom: 79px; display: flex; - margin-bottom: 27px; + border-bottom: 1px solid #eceef2; } .books__title { @@ -574,7 +613,7 @@ template { .button-buy { width: 101px; - padding: 7px 20px; + padding: 6px 20px 8px; background: #183b56; border-radius: 2000px; color: #ffffff; @@ -591,7 +630,7 @@ template { .recommend { margin-right: 31px; - max-width: 751px; + width: 751px; } .recommend__title { @@ -628,8 +667,8 @@ template { } .recommend__info-title { - padding: 13px 0; - margin-bottom: 3px; + margin-top: 13px; + margin-bottom: 16px; } .recommend__info-genre { @@ -640,6 +679,7 @@ template { .recommend__info-bottom { margin-top: 24px; + margin-bottom: 13px; display: flex; align-items: center; } @@ -649,11 +689,9 @@ template { } .recommend__info-heart { - margin-top: 6px; + position: relative; width: 18px; height: 21px; - background: url(/img/heart.svg) no-repeat center center; - background-size: contain; } .recommend-link { @@ -674,6 +712,14 @@ template { border-radius: 8px; } +.recommend .button-like { + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 21px; +} + .top__wrapper { display: flex; flex-direction: column; @@ -689,6 +735,7 @@ template { .top__card { display: flex; + width: 314px; margin-bottom: 35px; } @@ -712,6 +759,8 @@ template { .top__info-title { margin-bottom: 15px; + overflow: auto; + max-height: 64px; } .top__info-price { @@ -726,6 +775,7 @@ template { } .top-link { + width: 100%; font-family: Roboto Condensed; font-style: normal; font-weight: bold; @@ -736,213 +786,2063 @@ template { color: #1565d8; } -/* max-width: 1200px */ -@media (max-width: 1200px) { - .container { - max-width: 960px; - } - .main-description { - width: 500px; - } - .main__card { - margin-right: 0; - } +.sections { + padding: 60.5px 0 99px; } -@media (min-width: 993px) { - .button { - transition: .2s linear; - } - .button--blue:hover { - background-image: linear-gradient(to right, #EC1F46 0%, #faad13 51%, #EC1F46 100%); - background-size: 200% auto; - background-position: right center; - } - .button--white:hover { - background-image: linear-gradient(to right, #EC1F46 0%, #faad13 51%, #EC1F46 100%); - background-size: 200% auto; - background-position: right center; - border-color: transparent; - color: #ffffff; - } - a { - transition: color 0.15s ease; - } - a:hover { - color: #faad13; - } +.sections__wrapper { + position: relative; } -/* max-width: 992px */ -@media (max-width: 992px) { - .container { - max-width: 720px; - } - .header__menu { - margin-right: auto; - } - .main__wrapper { - width: 100%; - flex-direction: column; - } - .main__info { - width: auto; - margin-bottom: 75px; - margin-top: 0; - } - .main-description { - width: 100%; - } - .main-title { - margin-top: 0; - } - .main__book { - width: 100%; - align-self: center; - } - .main__book-image { - width: 300px; - height: 460px; - } +.sections__slider-button { + width: 56px; + height: 56px; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + z-index: 99; + top: 50%; + transform: translateY(-50%); + border-radius: 50%; + background-color: #ffffff; + background-position: center; + background-repeat: no-repeat; + border: none; + cursor: pointer; + box-shadow: 0px 12px 16px rgba(0, 0, 0, 0.08); } -/* max-width: 768px */ -@media (max-width: 768px) { - body { - padding-top: 88px; - } - .container { - width: 90%; - } - .header { - padding: 30px 0; - } - .header--fixed { - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 10; - background-color: #ffffff; - } - .header__menu--hidden { - display: none; - } - .header__menu--burger { - padding-top: 30px; - flex-direction: column; - align-items: end; - } - .header__menu-nav { - flex-direction: column; - text-align: right; - margin-right: 0; - margin-bottom: 40px; - } - .header__menu-item { - margin-bottom: 10px; - } - .header__burger-menu--visible { - display: block; - position: fixed; - top: 88px; - left: 0; - right: 0; - bottom: 0; - background-color: #ffffff; - } - .burger-button { - display: flex; - } - .main { - padding: 36px 0; - } +.sections__slider-button:disabled { + display: none; } -/* max-width: 576px */ -@media (max-width: 576px) { - .container { - width: 90%; - } - .main { - text-align: center; - } - .main__info { - margin-bottom: 40px; - } - .main-title { - width: 100%; - font-weight: bold; - font-size: 32px; - line-height: 40px; - margin-bottom: 23px; - } - .main-name { - font-size: 16px; - line-height: 24px; - margin-bottom: 33px; - } - .main-description { - font-size: 16px; - line-height: 23px; - margin-bottom: 18px; - } - .main__button-buy, .main__button-read { - height: 40px; - width: 176px; - padding: 9px 20px; - font-size: 16px; - line-height: 22px; - } - .main__button-read { - padding: 7px 20px; - } - .main__book-image { - width: 250px; - height: 374px; - } +.sections__slider-button--prev { + left: -30px; + background-image: url(../img/sections-prev.svg); } -/* max-width: 425px */ -@media (max-width: 425px) { - body { - padding-top: 64px; - } - .header { - padding: 18px 0; - } - .header__burger-menu { - top: 64px; - } - .header__menu--burger { - align-items: center; - } - .header__menu-nav { - align-items: center; - margin-bottom: 30px; - } - .main { - padding-top: 36px; - padding-bottom: 36px; - } - .main__info { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 36px; - } - .main__button-buy { - margin-right: 0; - margin-bottom: 15px; - } - .main__book { - height: 332px; - } - .main__book-image { - width: 143px; - height: 214px; - } - .burger-button { - margin-right: 8px; +.sections__slider-button--next { + background-image: url(../img/sections-next.svg); + right: -26px; +} + +.sections__slider-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + width: 265px; + height: auto; + padding: 40px 0 30px; + border: 1px solid #eceef2; + border-radius: 8px; + text-align: center; +} + +.sections__slider-info { + margin-bottom: auto; +} + +.sections-image { + object-fit: cover; +} + +.sections-image-wrapper { + width: 64px; + height: 64px; + margin-bottom: 38px; +} + +.sections__title { + margin-bottom: 12px; + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-size: 22px; + line-height: 32px; + letter-spacing: 0.2px; +} + +.sections__description { + font-size: 16px; + line-height: 22px; + color: #5a7184; +} + +.unreleased { + background-color: #183b56; + padding-top: 62px; + padding-bottom: 77px; +} + +.unreleased-container { + margin-top: 60px; +} + +.unreleased-wrap { + position: relative; +} + +.unreleased-slide { + width: 204px; + margin-right: 30px; +} + +.unreleased-slide--last { + margin-right: 0px; +} + +.unreleased__title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 36px; + line-height: 48px; + letter-spacing: 0.2px; + color: #ffffff; +} + +.unreleased__img { + width: 100%; + height: 298px; + object-fit: cover; + border-radius: 8px; + overflow: hidden; +} + +.unreleased-button { + padding: 0; + position: absolute; + top: -4px; + right: 0; + border: none; + cursor: pointer; + background-repeat: no-repeat; + background-position: centers; + background-color: transparent; + z-index: 90; +} + +.unreleased-button--prev { + right: 78px; +} + +.unreleased-button:disabled { + cursor: default; + box-shadow: none; + opacity: 0.5; +} + +.author { + padding: 77px 0 100px; +} + +.author__wrapper { + max-width: 1005px; + margin: 0 auto; +} + +.author__head { + display: flex; + justify-content: space-between; + margin: 28px 0 19px; +} + +.author__items { + display: grid; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: 380px 1fr; + gap: 30px; + flex-direction: column; +} + +.author__video { + grid-column: span 1; + position: relative; +} + +.author__video-wrapper { + position: relative; + height: 200px; + margin-bottom: 22px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; +} + +.author__video-wrapper--two { + background-image: url(../img/author-2.jpg); +} + +.author__video-wrapper--three { + background-image: url(../img/author-3.jpg); +} + +.author__video-wrapper--four { + background-image: url(../img/author-4.jpg); +} + +.author__video-main { + background-image: url(../img/author-1.jpg); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + grid-column: span 3; +} + +.author__video-icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + cursor: pointer; +} + +.author__video-icon-other { + top: 52%; +} + +.author__bottom { + display: flex; + justify-content: space-between; +} + +.author__name { + margin-bottom: 10px; + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-size: 22px; + line-height: 32px; + letter-spacing: 0.2px; +} + +.author__about { + font-size: 16px; + line-height: 22px; +} + +.author__title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 48px; + line-height: 60px; + letter-spacing: 0.2px; +} + +.author__description { + width: 383px; + margin-right: 35px; + font-size: 18px; + line-height: 32px; + scrollbar-width: none; +} + +.author__description::-webkit-scrollbar { + width: 0px; + background: rgba(255, 255, 255, 0); +} + +.author__favorite { + margin-top: 7px; + width: 18px; + height: 21px; + padding: 0; +} + +.button-favorite { + width: 100%; + height: 100%; + fill: #1565d8; + stroke-width: 2px; +} + +.button-favorite:active { + fill: #faad13; +} + +.publishers { + background-color: #b3bac5; + padding: 80px 0 100px; +} + +.publishers__title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 24px; + line-height: 32px; + text-align: center; + letter-spacing: 0.2px; + color: #ffffff; + margin-bottom: 52px; +} + +.publishers__wrapper { + margin: 0 auto; + width: 1048px; + display: grid; + align-items: center; + grid-template-columns: repeat(6, 1fr); + grid-template-rows: 1fr 1fr; + grid-column-gap: 90px; + grid-row-gap: 52px; +} + +.publishers-wrap { + display: none; +} + +.blog { + padding: 100px 0 97px; +} + +.blog__head { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 40px; +} + +.blog__title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 48px; + line-height: 60px; + letter-spacing: 0.2px; +} + +.blog__button { + padding: 10px 54px; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 20px; + text-align: center; + letter-spacing: 0.2px; + color: #1565d8; + border: 2px solid #1565d8; + border-radius: 2000px; +} + +.blog__button--hidden { + display: none; +} + +.blog__items { + display: grid; + grid-template-columns: 556px 1fr; + grid-template-rows: repeat(3, 1fr); + grid-row-gap: 27px; + grid-column-gap: 30px; +} + +.blog__card { + grid-row: span 1; + display: flex; +} + +.blog__card-main { + grid-row: span 3; + flex-direction: column; +} + +.blog__card-image { + border-radius: 30px; + width: 250px; +} + +.blog__card-image-main { + margin-bottom: 27px; + width: 556px; +} + +.blog__card-image-other { + margin-right: 36px; +} + +.blog__card-picture { + border-radius: 8px; + object-fit: cover; +} + +.blog__card-info-main { + width: 536px; + padding-left: 10px; +} + +.blog__card-info-other { + padding: 6px 0 9px; + width: 262px; + display: flex; + flex-direction: column; +} + +.blog__card-title { + margin-bottom: 18px; + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-size: 22px; + line-height: 32px; + letter-spacing: 0.2px; + owerflow: auto; + max-height: 64px; +} + +.blog__card-title-main { + margin-bottom: 16px; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 24px; + line-height: 32px; + letter-spacing: 0.2px; +} + +.blog__card-description { + font-size: 18px; + line-height: 32px; + color: #5a7184; + overflow: auto; + max-height: 96px; +} + +.blog__card-date { + display: inline-block; + margin-bottom: 16px; + font-size: 14px; + line-height: 20px; + color: #5a7184; + text-transform: uppercase; +} + +.blog__card-link { + margin-top: auto; + text-transform: uppercase; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 20px; + letter-spacing: 0.2px; + color: #1565d8; +} + +.blog__bottom { + text-align: center; +} + +.subscribe__wrapper { + display: flex; + align-items: center; + justify-content: space-between; + border-radius: 12px; + padding: 60px 63px 80px 60px; + background-image: url(../img/sub-bg.jpg); + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +.subscribe__title { + width: 393px; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 36px; + line-height: 48px; + letter-spacing: 0.2px; + color: #ffffff; +} + +.subscribe__shape { + margin-bottom: -36px; + width: 447px; +} + +.subscribe__form { + position: relative; + min-height: 52px; +} + +.subscribe__input { + width: 100%; + position: absolute; + top: 0; + padding-right: 178px; + font-weight: 600; + font-size: 16px; + line-height: 22px; + color: #959ead; + overflow: hidden; + border-radius: 8px; + border: 1px solid #C3CAD9; +} + +.subscribe__button { + position: absolute; + top: 0; + right: 0; + min-width: 169px; + height: 56px; + border: 3px solid #ffffff; + font-weight: bold; + font-size: 16px; + line-height: 22px; + color: #ffffff; + background-color: #faad13; +} + +.subscribe-wrap { + display: none; +} + +.form-icon { + position: absolute; + width: 16px; + height: 18px; + top: 18px; + left: 20px; +} + +.input-wrapper { + padding-top: 15px; +} + +.input-wrapper-subscribe { + height: 71px; +} + +.invalid { + bottom: 0; +} + +.footer { + padding: 108px 0 80px; +} + +.footer__wrapper { + display: flex; + margin-bottom: 72px; +} + +.footer__columns { + display: flex; +} + +.footer__main { + margin-right: 59px; +} + +.footer__product { + margin-right: 82px; +} + +.footer__service { + margin-right: 82px; +} + +.footer__company { + margin-right: 94px; +} + +.footer__tagline { + margin-top: 25px; + width: 233px; + margin-bottom: 30px; + font-size: 15px; + line-height: 28px; +} + +.footer__link { + position: relative; + display: inline-block; + width: 42px; + height: 40px; +} + +.footer__link-google { + margin-right: 2px; +} + +.footer__link-twitter { + margin-right: 2px; +} + +.footer__link-instagram { + margin-right: 2px; +} + +.footer__link-icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.footer__title { + margin-bottom: 31px; + font-weight: bold; + font-size: 18px; + line-height: 25px; +} + +.footer__list { + padding: 0; + margin: 0; +} + +.footer__list-item { + margin-bottom: 24px; + list-style: none; + font-size: 16px; + line-height: 22px; +} + +.footer__copyright { + display: flex; + flex-direction: column; + align-items: center; +} + +.footer__icon { + margin-bottom: 21px; +} + +.footer__text { + font-weight: 600; + font-size: 16px; + line-height: 22px; +} + +.modal__overlay { + position: fixed; + background-color: rgba(255, 255, 255, 0.3); + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 120; + visibility: hidden; + opacity: 0; + transition: opacity 0.2s; +} + +.modal__overlay--visible { + visibility: visible; + opacity: 1; +} + +.modal__close { + position: absolute; + top: 17px; + right: 17px; + width: 24px; + height: 24px; + fill: #ffffff; +} + +.modal__dialog { + position: fixed; + top: 50%; + left: 50%; + z-index: 121; + transform: translate(-50%, -50%); + width: 500px; + padding: 30px 70px; + background-color: #183b56; + border-radius: 8px; + visibility: hidden; + opacity: 0; + transition: opacity 0.2s; +} + +.modal__dialog--visible { + visibility: visible; + opacity: 1; +} + +.modal__title { + margin-bottom: 15px; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 28px; + line-height: 36px; + letter-spacing: 0.2px; + text-transform: uppercase; + color: #ffffff; + text-align: center; + flex-basis: 100%; +} + +.modal__input { + position: absolute; + top: 0; + margin-bottom: 20px; + font-weight: 600; + font-size: 16px; + line-height: 22px; + color: #959ead; + width: 100%; + height: 50px; +} + +.modal__button { + width: 100%; + height: 58px; + padding: 10px; + font-weight: bold; + font-size: 16px; + line-height: 22px; + color: #ffffff; + background-color: #faad13; + text-transform: uppercase; +} + +.thanks { + padding-top: 100px; +} + +.thanks__info { + margin-bottom: 30px; +} + +.thanks__title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 48px; + line-height: 60px; + letter-spacing: 0.2px; + margin-bottom: 20px; +} + +.thanks__text { + font-family: Roboto; + font-style: normal; + font-weight: 500; + font-size: 20px; + line-height: 24px; + letter-spacing: 0.2px; +} + +.button-return { + display: inline-block; + padding: 18px 38px 18px 35px; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 22px; + text-transform: uppercase; + color: #ffffff; + background-color: #1565d8; +} + +.button-return:hover { + color: #ffffff; +} + +.error__info { + text-align: center; +} + +.button-to-top { + position: fixed; + padding: 5px; + bottom: 80px; + right: 30px; + z-index: 9999; + width: 50px; + height: 50px; + text-align: center; + line-height: 30px; + background: #faad13; + cursor: pointer; + border: none; +} + +.button-to-top:hover { + background: #ffffff; + border-radius: 8px; + border: 2px solid #1565d8; +} + +.button-to-top-show { + display: block; +} + +.to-top-image { + transform: rotate(-90deg); + margin: 0; + width: 30px; + height: 30px; +} + +/* max-width: 1200px */ +@media screen and (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +@media (max-width: 1200px) { + .container { + max-width: 960px; + } + .main-description { + width: 500px; + } + .main__card { + margin-right: 0; + } + .books__wrapper { + flex-wrap: wrap; + } + .recommend { + width: 100%; + justify-content: space-between; + margin-bottom: 60px; + margin-right: 0; + } + .recommend__card { + text-align: center; + flex-direction: column; + align-items: center; + width: 295px; + padding: 24px; + } + .recommend__card:nth-child(4) { + margin-bottom: 0; + } + .recommend-image { + margin-right: 0; + } + .recommend__info-genre { + margin-bottom: 20px; + } + .recommend__info-bottom { + margin-top: 18px; + } + .top { + width: 100%; + } + .top__wrapper { + padding: 24px 15px; + flex-direction: row; + justify-content: space-between; + } + .top__card { + text-align: center; + flex-direction: column; + width: 220px; + } + .top-image { + margin-right: 0; + margin-bottom: 13px; + align-self: center; + } + .top__info { + align-items: center; + padding-top: 0; + padding-left: 0; + } + .top-line { + width: 100%; + } + .top-link { + align-self: center; + } + .sections__slider-item { + padding: 30px 6px; + } + .sections__slider-button { + top: 40%; + } + .sections__slider-button--prev { + left: -15px; + } + .sections__slider-button--next { + right: -15px; + } + .sections-image-wrapper { + margin-bottom: 30px; + } + .sections__title { + font-size: 18px; + line-height: 1.6; + } + .unreleased-slide { + margin-right: 48px; + } + .unreleased-slide--last { + margin-right: 0px; + } + .publishers__wrapper { + width: auto; + grid-column-gap: 80px; + grid-row-gap: 40px; + } + .blog__items { + grid-template-columns: 450px 1fr; + grid-template-rows: repeat(3, 1fr); + grid-gap: 20px; + } + .blog__card-image-main { + width: auto; + margin-bottom: 27px; + width: auto; + height: 324px; + } + .blog__card-image-other { + margin-right: 25px; + } + .blog__card-picture { + object-fit: cover; + width: 100%; + height: 100%; + } + .blog__card-info-main { + width: 430px; + } + .blog__card-info-other { + width: 200px; + } + .blog__card-title { + font-size: 16px; + line-height: 1.6; + } + .blog__card-title-main { + font-size: 20px; + line-height: 1.6; + } + .blog__card-description { + font-size: 14px; + line-height: 1.6; + } + .blog__card-date { + margin-bottom: 10px; + font-size: 12px; + } + .subscribe__wrapper { + padding: 60px 40px 80px; + } + .subscribe__shape { + width: 427px; + } + .subscribe__input { + padding-right: 160px; + } + .subscribe__button { + min-width: 150px; + } + .footer__main { + margin-right: 60px; + } + .footer__product { + margin-right: 60px; + } + .footer__service { + margin-right: 60px; + } + .footer__company { + margin-right: 70px; + } +} + +@media (min-width: 993px) { + .button { + transition: .2s linear; + } + .button--blue:hover { + background-image: linear-gradient(to right, #EC1F46 0%, #faad13 51%, #EC1F46 100%); + background-size: 200% auto; + background-position: right center; + } + .button--white:hover { + background-image: linear-gradient(to right, #EC1F46 0%, #faad13 51%, #EC1F46 100%); + background-size: 200% auto; + background-position: right center; + border-color: transparent; + color: #ffffff; + } + .button-buy:hover { + background-color: #faad13; + color: #ffffff; + } + a { + transition: color 0.15s ease; + } + a:hover { + color: #faad13; + } +} + +/* max-width: 992px */ +@media (max-width: 992px) { + .container { + max-width: 720px; + } + .header__menu { + margin-right: auto; + } + .main__wrapper { + width: 100%; + flex-direction: column; + } + .main__info { + width: auto; + margin-bottom: 75px; + margin-top: 0; + } + .main-description { + width: 100%; + overflow: initial; + height: auto; + } + .main-title { + margin-top: 0; + } + .main__book { + width: 100%; + align-self: center; + } + .main__book-image { + width: 300px; + height: 460px; + } + .recommend__wrapper { + justify-content: space-between; + } + .recommend__card { + flex-direction: row; + width: 350px; + padding: 10px; + margin-bottom: 15px; + } + .recommend__card:nth-child(4) { + margin-bottom: 15px; + } + .recommend-image { + margin-right: 20px; + } + .recommend__info { + text-align: left; + } + .top__wrapper { + justify-content: space-between; + } + .top__card { + flex-direction: row; + width: 314px; + margin-bottom: 20px; + } + .top__info { + margin-left: 9px; + align-items: start; + text-align: left; + } + .unreleased-slide { + margin-right: 54px; + } + .unreleased-slide--last { + margin-right: 0px; + } + .author { + padding: 50px 0 70px; + } + .author__title { + font-size: 42px; + line-height: 1.6; + } + .author__description { + width: 340px; + margin-right: 0; + font-size: 16px; + line-height: 1.6; + } + .author__items { + gap: 20px; + } + .author__wrapper { + width: 100%; + } + .author__video-wrapper { + margin-bottom: 18px; + } + .author__name { + font-size: 18px; + line-height: 1.6; + margin-bottom: 6px; + } + .author__about { + font-size: 14px; + line-height: 1.6; + } + .publishers { + padding: 60px 0 70px; + } + .publishers__title { + font-size: 24px; + line-height: 32px; + margin-bottom: 40px; + } + .publishers__wrapper { + grid-column-gap: 40px; + grid-row-gap: 40px; + } + .blog { + padding: 70px 0; + } + .blog__items { + grid-template-columns: 1fr; + grid-template-rows: 1fr repeat(3, 150px); + grid-gap: 28px; + } + .blog__card-main { + grid-row: span 1; + } + .blog__card-image-main { + height: auto; + } + .blog__card-info-main { + width: 100%; + padding-left: 0; + } + .blog__card-info-other { + width: 260px; + } + .blog__card-title { + font-size: 22px; + line-height: 32px; + } + .blog__card-title-main { + font-size: 24px; + line-height: 32px; + } + .blog__card-description { + font-size: 18px; + line-height: 32px; + } + .blog__card-date { + font-size: 14px; + line-height: 20px; + } + .subscribe { + background-color: #fff; + } + .subscribe__wrapper { + height: auto; + padding: 60px 40px 60px; + flex-direction: column; + align-items: start; + } + .subscribe__title { + margin-bottom: 32px; + font-size: 30px; + line-height: 1.6; + } + .footer__wrapper { + flex-wrap: wrap; + } + .footer__columns { + flex-basis: 100%; + justify-content: space-between; + margin-bottom: 47px; + } + .footer__main { + margin-right: 0; + order: 2; + } + .footer__product { + margin-right: 0; + } + .footer__service { + margin-right: 0; + } + .footer__company { + margin-right: 0; + } +} + +/* max-width: 768px */ +@media (max-width: 768px) { + body { + padding-top: 88px; + } + .container { + width: 90%; + } + .header { + padding: 30px 0; + } + .header--fixed { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 110; + background-color: #ffffff; + } + .header__menu { + align-items: flex-end; + } + .header__menu--hidden { + display: none; + } + .header__menu--burger { + padding-top: 30px; + flex-direction: column; + } + .header__menu-nav { + flex-direction: column; + text-align: right; + margin-right: 0; + margin-bottom: 40px; + } + .header__menu-item { + margin-bottom: 10px; + margin-right: 0; + } + .header__burger-menu--visible { + display: block; + position: fixed; + top: 88px; + left: 0; + right: 0; + bottom: 0; + z-index: 110; + background-color: #ffffff; + } + .burger-button { + display: flex; + } + .main { + padding: 36px 0; + } + .recommend__card { + flex-basis: 48%; + flex-direction: column; + align-items: center; + text-align: center; + padding: 32px 18px; + } + .recommend-image { + margin-right: 0; + } + .recommend__info { + text-align: center; + } + .top__card { + flex-direction: column; + flex-basis: 48%; + } + .top__info { + text-align: center; + align-items: center; + } + .sections__slider-button { + top: 50%; + } + .unreleased { + padding-top: 48px; + padding-bottom: 133px; + } + .unreleased-slide { + width: 100%; + margin-right: 0px; + text-align: center; + } + .unreleased__title { + text-align: center; + } + .unreleased__img { + width: 300px; + height: 434px; + } + .unreleased-button { + top: auto; + bottom: -88px; + } + .unreleased-button--next { + transform: translateX(100%); + right: 47%; + } + .unreleased-button--prev { + transform: translateX(-100%); + left: 47%; + } + .unreleased-button__svg { + width: 48px; + height: 48px; + } + .author__head { + margin-top: 0; + margin-bottom: 35px; + flex-direction: column; + align-items: center; + } + .author__title { + font-size: 36px; + margin-bottom: 23px; + } + .author__description { + width: 460px; + text-align: center; + height: auto; + font-size: 18px; + line-height: 25px; + } + .author__items { + grid-template-columns: repeat(2, 1fr); + grid-template-rows: 360px 286px; + } + .author__video-main { + grid-column: span 2; + } + .author__video:last-child { + display: none; + } + .author-wrap { + display: none; + } + .publishers__title { + margin-left: auto; + margin-right: auto; + font-size: 24px; + line-height: 30px; + width: 350px; + margin-bottom: 27px; + } + .publishers__wrapper { + align-items: center; + grid-template-columns: repeat(4, 1fr); + grid-column-gap: 30px; + grid-row-gap: 30px; + } + .publishers__image { + margin: auto; + } + .publishers-wrap { + display: block; + } + .blog__card-title { + font-size: 18px; + line-height: 1.6; + } + .blog__card-title-main { + font-size: 20px; + line-height: 1.6; + } + .blog__card-image-main { + margin-bottom: 20px; + } + .blog__card-title-main { + margin-bottom: 11px; + } + .blog__card-description { + font-size: 14px; + line-height: 1.6; + } + .blog__card-date { + font-size: 12px; + line-height: 20px; + } + .blog__card-link { + font-size: 14px; + line-height: 1.6; + letter-spacing: 0.125px; + } + .footer__title { + margin-bottom: 20px; + font-size: 16px; + line-height: 22px; + } + .footer__list-item { + margin-bottom: 15px; + font-size: 14px; + line-height: 20px; + } + .thanks { + padding-top: 60px; + } + .thanks__title { + font-size: 36px; + line-height: 42px; + margin-bottom: 16px; + } + .thanks__text { + font-size: 16px; + line-height: 21px; + } + .button-return { + padding: 13px 20px; + font-size: 14px; + } + .button-to-top { + position: fixed; + bottom: 20px; + right: 20px; + width: 40px; + height: 40px; + } + .to-top-image { + transform: rotate(-90deg); + margin: 0; + width: 20px; + height: 20px; + } +} + +/* max-width: 576px */ +@media (max-width: 576px) { + .main { + text-align: center; + } + .main__info { + margin-bottom: 40px; + } + .main-title { + width: 100%; + font-weight: bold; + font-size: 32px; + line-height: 40px; + margin-bottom: 23px; + } + .main-name { + font-size: 16px; + line-height: 24px; + margin-bottom: 33px; + } + .main-description { + font-size: 16px; + line-height: 23px; + margin-bottom: 18px; + } + .main__button-buy, .main__button-read { + height: 40px; + width: 176px; + padding: 9px 20px; + font-size: 16px; + line-height: 22px; + } + .main__button-read { + padding: 7px 27px; + } + .main__book-image { + width: 250px; + height: 374px; + } + .cards__title { + font-size: 22px; + line-height: 32px; + } + .sections-image-wrapper { + width: 36px; + height: 36px; + margin-bottom: 16px; + } + .unreleased-container { + margin-top: 41px; + } + .unreleased__title { + font-size: 28px; + line-height: 36px; + } + .unreleased__img { + width: 206px; + height: 300px; + } + .author__container { + width: 94%; + } + .author__items { + grid-template-rows: 310px 1fr; + } + .author__title { + font-size: 28px; + line-height: 36px; + } + .author__description { + width: 280px; + } + .author__bottom { + align-items: center; + flex-direction: column; + text-align: center; + } + .author__name { + font-weight: 500; + font-size: 16px; + line-height: 20px; + margin-bottom: 6px; + } + .author__about { + font-size: 12px; + line-height: 20px; + } + .author__info { + margin-bottom: 16px; + } + .author__video-wrapper { + margin-bottom: 16px; + } + .author__video-main { + background-image: url(../img/author-1-s.jpg); + } + .author__video-icon { + width: 21px; + height: 27px; + } + .author__video-icon--main { + width: 56px; + height: 56px; + } + .author__favorite { + margin-top: -4px; + } + .author__button { + width: auto; + } + .button-favorite { + width: 14px; + height: 13px; + } + .publishers { + padding: 37px 0 57px; + } + .publishers__wrapper { + align-items: center; + grid-template-columns: repeat(3, 1fr); + grid-column-gap: 20px; + grid-row-gap: 20px; + } + .publishers__title { + width: 280px; + } + .publishers__image:nth-child(n+10) { + display: none; + } + .blog { + position: relative; + padding: 56px 0 48px; + } + .blog__wrapper { + margin-left: 5px; + margin-right: 3px; + } + .blog__head { + justify-content: center; + margin-bottom: 48px; + } + .blog__title { + font-size: 28px; + line-height: 36px; + } + .blog__card-image { + width: auto; + } + .blog__card-image-main { + width: auto; + } + .blog__card-title { + overflow: auto; + max-height: 60px; + } + .blog__card-title-main { + font-size: 16px; + line-height: 20px; + } + .blog__card-info { + width: 240px; + } + .blog__card-description { + font-size: 12px; + line-height: 24px; + } + .blog__button--visible { + display: none; + } + .blog__button--hidden { + display: inline-block; + margin-top: 35px; + padding: 10px 47px; + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 14px; + line-height: 20px; + text-align: center; + letter-spacing: 0.175px; + } + .subscribe { + padding-bottom: 20px; + background-image: url(../img/sub-bg.jpg); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + } + .subscribe__wrapper { + background-image: none; + height: auto; + padding: 27px 8px 8px 8px; + flex-direction: column; + align-items: start; + } + .subscribe__title { + width: 100%; + margin-bottom: 32px; + font-size: 28px; + line-height: 36px; + } + .subscribe__shape { + padding: 0 8px 8px; + width: 100%; + height: 112px; + padding-bottom: 12px; + margin-bottom: 0; + background-color: #ffffff; + overflow: hidden; + border-radius: 8px; + border: 1px solid #C3CAD9; + } + .subscribe__input { + padding-top: 15px; + padding-right: 24px; + padding-left: 39px; + border: none; + } + .subscribe__button { + min-width: 150px; + top: revert; + left: 0; + width: 100%; + height: 48px; + } + .subscribe-wrap { + display: block; + } + .input-wrapper-subscribe { + height: 54px; + } + .form-icon { + left: 10px; + } + .footer { + padding: 48px 0 64px; + } + .footer__wrapper { + justify-content: center; + margin-right: 6px; + padding-left: 8px; + margin-bottom: 0; + } + .footer__columns { + flex-wrap: wrap; + margin-bottom: 44px; + } + .footer__product { + flex-basis: 52%; + margin-bottom: 39px; + } + .footer__service { + flex-basis: 48%; + } + .footer__company { + flex-basis: 52%; + } + .footer__more { + flex-basis: 48%; + } + .footer__main { + order: 2; + text-align: center; + } + .footer__logo { + margin-bottom: 16px; + } + .footer__tagline { + margin-top: 11px; + margin-right: 11px; + margin-bottom: 14px; + } + .footer__copyright { + display: none; + } + .footer__list-item:last-child { + margin: 0; + } + .modal__close { + top: 17px; + right: 17px; + width: 20px; + height: 20px; + fill: #ffffff; + } + .modal__dialog { + width: 90%; + padding: 30px 50px; + } + .modal__title { + margin-bottom: 25px; + font-size: 24px; + line-height: 30px; + } + .modal__input { + padding: 15px; + margin-bottom: 20px; + font-size: 14px; + line-height: 20px; + height: 46px; + } + .modal__button { + height: 50px; + padding: 10px; + font-size: 14px; + line-height: 20px; + } +} + +/* max-width: 460px */ +@media (max-width: 460px) { + body { + padding-top: 64px; + } + .header { + padding: 18px 0; + } + .header__burger-menu { + top: 64px; + } + .header__menu--burger { + align-items: center; + } + .header__menu-nav { + align-items: center; + margin-bottom: 30px; + } + .main { + padding-top: 36px; + padding-bottom: 36px; + } + .main__info { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 36px; + } + .main__button-buy { + margin-right: 0; + margin-bottom: 15px; + } + .main__book { + height: 332px; + } + .main__book-image { + width: 143px; + height: 214px; + } + .burger-button { + margin-right: 8px; + } + .books { + padding-top: 21px; + } + .books__title { + font-size: 28px; + line-height: 36px; + } + .books__wrapper { + padding-bottom: 56px; + } + .recommend { + text-align: center; + margin-bottom: 57px; + } + .recommend__title { + margin-bottom: 72px; + } + .recommend__wrapper { + flex-direction: column; + align-items: center; + margin-bottom: 24px; + } + .recommend__card { + width: 100%; + padding: 9px 9px 18px 9px; + margin-bottom: 0px; + border-radius: 8px; + } + .recommend__card:not(:nth-child(1)) { + display: none; + } + .recommend-image { + margin-top: -35px; + width: 95px; + height: 137px; + } + .recommend__info-title { + margin-top: 19px; + font-size: 20px; + line-height: 24px; + margin-bottom: 12px; + } + .recommend__info-genre { + font-size: 14px; + line-height: 20px; + margin-bottom: 16px; + } + .recommend__info-price { + margin-right: 10px; + font-size: 16px; + line-height: 20px; + margin-bottom: 20px; + } + .recommend__info-bottom { + margin-top: 20px; + justify-content: center; + } + .recommend__info-button { + width: 115px; + } + .recommend-wrap { + display: none; + } + .recommend-link { + padding: 14px 61px; + text-transform: none; + } + .top__title { + text-align: center; + margin-bottom: 35px; + } + .top__wrapper { + flex-direction: column; + justify-content: start; + padding: 26px 14px 21px 14px; + } + .top__card { + max-width: 280px; + flex-direction: row; + margin-bottom: 24px; + } + .top__card:nth-child(2) { + margin-bottom: 22px; + } + .top__card:nth-child(4) { + margin-bottom: 25px; + } + .top-image { + width: 95px; + height: 142px; + } + .top__info { + margin-top: 4px; + margin-left: 15px; + align-items: start; + } + .top__info-title { + font-family: Roboto Condensed; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 24px; + margin-bottom: 12px; + text-align-last: left; + } + .top__info-price { + margin-bottom: 14px; + } + .top-line { + margin-bottom: 19px; + } + .top-link { + align-self: start; + } + .sections { + padding: 55px 0 140px; + } + .sections__slider-item { + padding: 20px 14px; + width: 140px; + height: 182px; + } + .sections__slider-button { + width: 48px; + height: 48px; + left: 0; + box-shadow: 0px 12px 16px rgba(0, 0, 0, 0.08); + } + .sections__slider-button--prev { + background-image: url(../img/sections-prev-small.svg); + top: 406px; + left: 48%; + transform: translateX(-100%); + } + .sections__slider-button--next { + background-image: url(../img/sections-next-small.svg); + top: 430px; + left: 52%; + } + .sections-image { + width: 36px; + height: 36px; + margin-bottom: 16px; + } + .sections__title { + height: 40px; + font-family: Roboto Condensed; + font-size: 16px; + line-height: 20px; + margin-bottom: 10px; + } + .sections__description { + font-size: 12px; + line-height: 20px; + } + .unreleased__slider { + width: 204px; + } + .author { + padding: 45px 0 37px; + } + .author__items { + grid-template-rows: 210px 1fr; + } + .author__video-wrapper { + height: 138px; + } + .author__video-wrapper--three { + background-image: url(../img/author-3-s.jpg); + } + .publishers__wrapper { + width: 232px; + grid-template-columns: repeat(2, 1fr); + grid-column-gap: 10px; + } + .publishers__image { + margin-right: 5px; + } + .publishers__image:nth-child(n+7) { + display: none; + } + .blog { + padding: 56px 0 48px; + } + .blog__title { + font-size: 28px; + line-height: 36px; + } + .blog__card-title { + font-size: 14px; + line-height: 20px; + } + .blog__card-title-main { + font-size: 16px; + line-height: 20px; + } + .blog__card-image-other { + margin-right: 20px; + } + .blog__card-info { + width: 100%; + } + .blog__card-info-other { + width: 164px; + } + .blog__card-description { + font-size: 12px; + line-height: 24px; + } + .blog__card-date { + font-size: 10px; + line-height: 20px; + } + .blog__card-link { + font-size: 10px; + line-height: 20px; + } + .blog__items { + display: grid; + grid-template-rows: 1fr repeat(3, 120px); + } + .modal__close { + top: 12px; + right: 12px; + } + .modal__dialog { + padding: 20px 30px; + } + .modal__title { + font-size: 21px; + line-height: 26px; + } + .modal__input { + font-size: 14px; + line-height: 20px; + height: 46px; + } + .thanks { + padding-top: 40px; + } + .thanks__wrapper { + text-align: center; + } + .thanks__info { + margin-bottom: 20px; + } + .thanks__title { + font-size: 28px; + line-height: 36px; + } + .thanks__text { + font-size: 14px; + line-height: 20px; + } + .button-return { + font-size: 12px; + line-height: 18px; + } +} + +/* max-width: 320px */ +@media (max-width: 320px) { + .blog__card-image-main { + height: 120px; + } + .blog__card-image-other { + width: 90px; + height: 90px; + } + .blog__card-title { + margin-bottom: 3px; + } + .blog__card-info { + padding: 0; + display: block; + } + .blog__card-date { + margin-bottom: 4px; + } + .blog__items { + display: grid; + grid-template-rows: 1fr repeat(3, 93px); + } +} + +/* max-width: 320px */ +@media (max-height: 460px) and (max-width: 992px) { + .modal__overlay { + overflow-y: auto; + } + .modal__dialog { + position: absolute; + top: 230px; + transform: translate(-50%, -50%); } } diff --git a/css/swiper-bundle.min.css b/css/swiper-bundle.min.css new file mode 100644 index 0000000..cb0a2e2 --- /dev/null +++ b/css/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 6.7.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2021 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 1, 2021 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA') format('woff');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-container-pointer-events{touch-action:pan-y}.swiper-container-pointer-events.swiper-container-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:50%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-container-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/img/Button-active.jpg b/img/Button-active.jpg new file mode 100644 index 0000000..5bff4a7 Binary files /dev/null and b/img/Button-active.jpg differ diff --git a/img/airbnb.svg b/img/airbnb.svg new file mode 100644 index 0000000..cd99d43 --- /dev/null +++ b/img/airbnb.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/arrow-active-small.svg b/img/arrow-active-small.svg new file mode 100644 index 0000000..7587554 --- /dev/null +++ b/img/arrow-active-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/arrow-active.svg b/img/arrow-active.svg new file mode 100644 index 0000000..a7a3c0d --- /dev/null +++ b/img/arrow-active.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/arrow-unactive.svg b/img/arrow-unactive.svg new file mode 100644 index 0000000..c4dc564 --- /dev/null +++ b/img/arrow-unactive.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/author-1-s.jpg b/img/author-1-s.jpg new file mode 100644 index 0000000..b7324a5 Binary files /dev/null and b/img/author-1-s.jpg differ diff --git a/img/author-1.jpg b/img/author-1.jpg new file mode 100644 index 0000000..208e7f1 Binary files /dev/null and b/img/author-1.jpg differ diff --git a/img/author-2.jpg b/img/author-2.jpg new file mode 100644 index 0000000..fb197a9 Binary files /dev/null and b/img/author-2.jpg differ diff --git a/img/author-3-s.jpg b/img/author-3-s.jpg new file mode 100644 index 0000000..55bde19 Binary files /dev/null and b/img/author-3-s.jpg differ diff --git a/img/author-3.jpg b/img/author-3.jpg new file mode 100644 index 0000000..3fd19df Binary files /dev/null and b/img/author-3.jpg differ diff --git a/img/author-4.jpg b/img/author-4.jpg new file mode 100644 index 0000000..9739bb4 Binary files /dev/null and b/img/author-4.jpg differ diff --git a/img/blog-1.jpg b/img/blog-1.jpg new file mode 100644 index 0000000..64d43b3 Binary files /dev/null and b/img/blog-1.jpg differ diff --git a/img/blog-2.jpg b/img/blog-2.jpg new file mode 100644 index 0000000..5ce2a05 Binary files /dev/null and b/img/blog-2.jpg differ diff --git a/img/blog-3.jpg b/img/blog-3.jpg new file mode 100644 index 0000000..af2e4a0 Binary files /dev/null and b/img/blog-3.jpg differ diff --git a/img/blog-main.jpg b/img/blog-main.jpg new file mode 100644 index 0000000..1c9eb24 Binary files /dev/null and b/img/blog-main.jpg differ diff --git a/img/book-1.jpg b/img/book-1.jpg index de043a5..301bffc 100644 Binary files a/img/book-1.jpg and b/img/book-1.jpg differ diff --git a/img/book-2.jpg b/img/book-2.jpg index 674c700..2d1cab8 100644 Binary files a/img/book-2.jpg and b/img/book-2.jpg differ diff --git a/img/book-3.jpg b/img/book-3.jpg index 17a4f4b..77ea575 100644 Binary files a/img/book-3.jpg and b/img/book-3.jpg differ diff --git a/img/book-4.jpg b/img/book-4.jpg index 248ca76..9dd6e9b 100644 Binary files a/img/book-4.jpg and b/img/book-4.jpg differ diff --git a/img/book-5.jpg b/img/book-5.jpg index da1fcd9..8393d22 100644 Binary files a/img/book-5.jpg and b/img/book-5.jpg differ diff --git a/img/book-6.jpg b/img/book-6.jpg index 53c4617..9b3f7a3 100644 Binary files a/img/book-6.jpg and b/img/book-6.jpg differ diff --git a/img/button-active-s.svg b/img/button-active-s.svg new file mode 100644 index 0000000..8417fe6 --- /dev/null +++ b/img/button-active-s.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/button-unactive-s.svg b/img/button-unactive-s.svg new file mode 100644 index 0000000..7307f13 --- /dev/null +++ b/img/button-unactive-s.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/envelope.svg b/img/envelope.svg new file mode 100644 index 0000000..7633289 --- /dev/null +++ b/img/envelope.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/fitbit.svg b/img/fitbit.svg new file mode 100644 index 0000000..bd00ad9 --- /dev/null +++ b/img/fitbit.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/img/footer-heart.svg b/img/footer-heart.svg new file mode 100644 index 0000000..072afff --- /dev/null +++ b/img/footer-heart.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/g.svg b/img/g.svg new file mode 100644 index 0000000..d4674e3 --- /dev/null +++ b/img/g.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/google.svg b/img/google.svg new file mode 100644 index 0000000..7263ee7 --- /dev/null +++ b/img/google.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/img/heart.svg b/img/heart.svg deleted file mode 100644 index ff02226..0000000 --- a/img/heart.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/ins.svg b/img/ins.svg new file mode 100644 index 0000000..7878555 --- /dev/null +++ b/img/ins.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/inst.svg b/img/inst.svg new file mode 100644 index 0000000..ec8cb64 --- /dev/null +++ b/img/inst.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/lin.svg b/img/lin.svg new file mode 100644 index 0000000..2c999fa --- /dev/null +++ b/img/lin.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/netflix.svg b/img/netflix.svg new file mode 100644 index 0000000..6003e7f --- /dev/null +++ b/img/netflix.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/sections-1.svg b/img/sections-1.svg new file mode 100644 index 0000000..76c3ff0 --- /dev/null +++ b/img/sections-1.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/img/sections-2.svg b/img/sections-2.svg new file mode 100644 index 0000000..57c0f4f --- /dev/null +++ b/img/sections-2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/img/sections-3.svg b/img/sections-3.svg new file mode 100644 index 0000000..edb6ace --- /dev/null +++ b/img/sections-3.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/img/sections-4.svg b/img/sections-4.svg new file mode 100644 index 0000000..79d8fb2 --- /dev/null +++ b/img/sections-4.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/img/sections-next-small.svg b/img/sections-next-small.svg new file mode 100644 index 0000000..7587554 --- /dev/null +++ b/img/sections-next-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/sections-next.svg b/img/sections-next.svg new file mode 100644 index 0000000..da21a6f --- /dev/null +++ b/img/sections-next.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/sections-prev-small.svg b/img/sections-prev-small.svg new file mode 100644 index 0000000..95494d1 --- /dev/null +++ b/img/sections-prev-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/sections-prev.svg b/img/sections-prev.svg new file mode 100644 index 0000000..66976bf --- /dev/null +++ b/img/sections-prev.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/slack.svg b/img/slack.svg new file mode 100644 index 0000000..127bd88 --- /dev/null +++ b/img/slack.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/img/sprite.svg b/img/sprite.svg new file mode 100644 index 0000000..0f54862 --- /dev/null +++ b/img/sprite.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + g> + + + + + + + + + + diff --git a/img/sub-bg.jpg b/img/sub-bg.jpg new file mode 100644 index 0000000..348d106 Binary files /dev/null and b/img/sub-bg.jpg differ diff --git a/img/top-1.jpg b/img/top-1.jpg index 77166eb..14b136c 100644 Binary files a/img/top-1.jpg and b/img/top-1.jpg differ diff --git a/img/top-2.jpg b/img/top-2.jpg index 14f2924..5fc7a69 100644 Binary files a/img/top-2.jpg and b/img/top-2.jpg differ diff --git a/img/top-3.jpg b/img/top-3.jpg index efc3a49..7ac28b0 100644 Binary files a/img/top-3.jpg and b/img/top-3.jpg differ diff --git a/img/top-4.jpg b/img/top-4.jpg index fa1160e..023d04b 100644 Binary files a/img/top-4.jpg and b/img/top-4.jpg differ diff --git a/img/tw.svg b/img/tw.svg new file mode 100644 index 0000000..e096365 --- /dev/null +++ b/img/tw.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/uber.svg b/img/uber.svg new file mode 100644 index 0000000..e4cb8aa --- /dev/null +++ b/img/uber.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/img/unreleased-1.png b/img/unreleased-1.png new file mode 100644 index 0000000..a00b1f9 Binary files /dev/null and b/img/unreleased-1.png differ diff --git a/img/unreleased-2.png b/img/unreleased-2.png new file mode 100644 index 0000000..f27213d Binary files /dev/null and b/img/unreleased-2.png differ diff --git a/img/unreleased-3.png b/img/unreleased-3.png new file mode 100644 index 0000000..9972a4d Binary files /dev/null and b/img/unreleased-3.png differ diff --git a/img/unreleased-4.png b/img/unreleased-4.png new file mode 100644 index 0000000..bdfa8c4 Binary files /dev/null and b/img/unreleased-4.png differ diff --git a/img/unreleased-5.png b/img/unreleased-5.png new file mode 100644 index 0000000..ab88939 Binary files /dev/null and b/img/unreleased-5.png differ diff --git a/img/up.svg b/img/up.svg new file mode 100644 index 0000000..e254aa4 --- /dev/null +++ b/img/up.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/video-main.svg b/img/video-main.svg new file mode 100644 index 0000000..5e7b3b7 --- /dev/null +++ b/img/video-main.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/video.svg b/img/video.svg new file mode 100644 index 0000000..5bf6a02 --- /dev/null +++ b/img/video.svg @@ -0,0 +1,3 @@ + + + diff --git a/index.html b/index.html index 59b995d..f48d1dc 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,9 @@ href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&family=Roboto+Condensed:wght@700&family=Roboto:wght@500&display=swap" rel="stylesheet" /> + + @@ -35,14 +37,18 @@
      - +
      - +
      @@ -57,14 +63,13 @@ @@ -78,7 +83,7 @@

      Design Theory: -
      +
      The Psychology of Graphic Design Pricing

      Книга Мишеля Янга
      @@ -86,7 +91,8 @@

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

      - + Купить сейчасЧитать демо
      @@ -98,18 +104,40 @@

      -
      +

      Рекомендации

      Image: Book
      -

      The World of
      Abstract Art

      +

      + The World of
      Abstract Art +

      Art & Design

      $25.00
      - +
      @@ -117,12 +145,32 @@

      The World of
      Abstract Art Image: Book
      -

      Educated :
      a Memoir

      +

      Educated :
      a Memoir

      Education

      $28.00
      - +

      @@ -130,12 +178,32 @@

      Educated :
      a Memoir

      Image: Book
      -

      The Blue
      Flowers Ray…

      +

      The Blue
      Flowers Ray…

      Novel

      $19.50
      - +
      @@ -143,12 +211,32 @@

      The Blue
      Flowers Ray…

      Image: Book
      -

      There There :
      a Novel by TO

      +

      There There :
      a Novel by TO

      Novel

      $20.00
      - +
      @@ -156,12 +244,32 @@

      There There :
      a Novel by TO<
      Image: Book
      -

      WMNDFL :
      The Inspiration

      +

      WMNDFL :
      The Inspiration

      Business

      $23.00
      - +
      @@ -169,12 +277,32 @@

      WMNDFL :
      The Inspiration

      Image: Book
      -

      Making
      Things Happen

      +

      Making
      Things Happen

      Motivation

      $23.00
      - +
      @@ -191,38 +319,46 @@

      Топ Месяца

      Image: Book

      - Sprint : Solve,
      + Sprint : Solve,
      Test in 5 Days

      $23.00 - +
      Image: Book
      -

      Hacking Growth
      Break Problem

      +

      Hacking Growth
      Break Problem

      $23.00 - +
      Image: Book
      -

      Very Nice a
      Novel by Mercy

      +

      Very Nice a
      Novel by Mercy

      $23.00 - +
      Image: Book
      -

      Hooked : How to
      Build Products

      +

      Hooked : How to
      Build Products

      $23.00 - +
      @@ -238,6 +374,595 @@

      Hooked : How to
      Build Products

      +
      +
      +
      +
      +
      +
      +
      + Slider +
      +
      +

      Бизнес & Финансы

      + Книги про мир бизнеса +
      +
      +
      +
      + Slider +
      +
      +

      Самомотиватия

      + Книги о мотивации +
      +
      +
      +
      + Slider +
      +
      +

      Романы Теленовеллы

      + Книги с крутыми историями +
      +
      +
      +
      + Slider +
      +
      +

      Навыки будущего

      + Книги для самоподготовки +
      +
      +
      +
      + Slider +
      +
      +

      Романы Теленовеллы

      + Книги с крутыми историями +
      +
      +
      +
      + Slider +
      +
      +

      Навыки будущего

      + Книги для самоподготовки +
      +
      +
      +
      + Slider +
      +
      +

      Бизнес & Финансы

      + Книги про мир бизнеса +
      +
      +
      +
      + Slider +
      +
      +

      Самомотиватия

      + Книги о мотивации +
      +
      +
      +
      + + +
      +
      + +
      + +
      +
      +
      +

      Неизданные книги

      + + + + +
      + +
      + +
      + Img: Unreleased - Logo Modernism +
      +
      + Img: Unreleased - The Overdue life +
      +
      + Img: Unreleased - Making Short Films +
      +
      + Img: Unreleased - Web Typography +
      +
      + Img: Unreleased - After the end +
      +
      + Img: Unreleased - Python +
      +
      + Img: Unreleased - The Freelance Way +
      +
      +
      +
      + +
      + +
      + + + +
      +
      +
      +
      +

      История Автора

      +

      + Это раздел авторского рассказа. Каждую неделю мы стараемся рассказать вам историю писателя. Расскажем всем +
      + о закулисье их книг. +

      +
      + +
      +
      + + Image: Icon-Play +
      +
      +
      + + Image: Icon-Play +
      +
      +
      +

      Emelda Scandroot

      + Author of Books Tittle +
      + +
      +
      +
      +
      + + Image: Icon-Play +
      +
      +
      +

      Mar Rueda

      + Author of Books Tittle +
      + +
      +
      +
      +
      + + Image: Icon-Play +
      +
      +
      +

      Nembo Lukeni

      + Author of Books Tittle +
      + +
      +
      +
      + +
      + +
      + +
      + +
      +
      +

      + Некоторые из издателей,
      с которыми мы сотрудничали +

      +
      + Image: sLack + Image: Netflix + Image: fitbit + Image: Google + Image: airbnb + Image: UBER + Image: NETFLX + Image: airbnb + Image: slack + Image: UBER + Image: fitbit + Image: Google +
      +
      + +
      + +
      +
      +
      +
      +

      Ehya Блог

      + Все Блоги +
      + +
      +
      +
      + Image: Blog +
      +
      +

      Success Steps For Your Business Life

      +

      + This is the author story section. Every week we try to give you the story of book writer. Tell all of + you the behind the scene of their books. +

      +
      +
      +
      +
      + Image: Blog +
      +
      + 23 марта 2020 +

      29 Motivational Quotes
      for Work Environments

      + Читать +
      +
      +
      +
      + Image: Blog +
      +
      + 28 марта 2020 +

      Learn To Love Growth
      and You Will Be A Succes

      + Читать +
      +
      +
      +
      + Image: Blog +
      +
      + 28 марта 2020 +

      Motivation How To Build Trust at your Work

      + Читать +
      +
      +
      + + +
      + +
      + +
      + + + + + + + + + Кнопка: Наверх + + + + + diff --git a/js/jquery-3.6.0.min.js b/js/jquery-3.6.0.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/js/jquery-3.6.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0g?h=10*d:e>=h&&e!==g?c.maskDigitPosMapOld[h]||(e=h,h=h-(k-l)-a,c.maskDigitPosMap[h]&&(h=e)):h>e&&(h=h+(l-k)+f)}return h},behaviour:function(d){d= +d||window.event;c.invalid=[];var e=b.data("mask-keycode");if(-1===a.inArray(e,l.byPassKeys)){e=c.getMasked();var h=c.getCaret(),g=b.data("mask-previus-value")||"";setTimeout(function(){c.setCaret(c.calculateCaretPosition(g))},a.jMaskGlobals.keyStrokeCompensation);c.val(e);c.setCaret(h);return c.callbacks(d)}},getMasked:function(a,b){var h=[],f=void 0===b?c.val():b+"",g=0,k=d.length,n=0,p=f.length,m=1,r="push",u=-1,w=0;b=[];if(e.reverse){r="unshift";m=-1;var x=0;g=k-1;n=p-1;var A=function(){return-1< +g&&-1").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a}); \ No newline at end of file diff --git a/js/js.js b/js/js.js deleted file mode 100644 index 01b4161..0000000 --- a/js/js.js +++ /dev/null @@ -1,165 +0,0 @@ -// ---------- JQuery ----------- - -// $(document).ready(function(){ -// if (document.getElementById('map_container')) { -// let map_container = document.getElementById('map_container'); -// let options_map = { -// once: true,//запуск один раз, и удаление наблюдателя сразу -// passive: true, -// capture: true -// }; -// map_container.addEventListener('click', start_lazy_map, options_map); -// map_container.addEventListener('mouseover', start_lazy_map, options_map); -// map_container.addEventListener('touchstart', start_lazy_map, options_map); -// map_container.addEventListener('touchmove', start_lazy_map, options_map); - -// let map_loaded = false; -// function start_lazy_map() { -// if (!map_loaded) { -// let map_block = document.getElementById('ymap_lazy'); -// map_loaded = true; -// map_block.setAttribute('src', map_block.getAttribute('data-src')); -// map_block.removeAttribute('data_src'); -// console.log('YMAP LOADED'); -// } -// } -// } - -// // ---------- Burger Menu ----------- - -// var menuButton = document.querySelector(".menu-button"); -// menuButton.addEventListener("click", function () { -// document.querySelector(".navbar-bottom").classList.toggle("navbar-bottom--visible"); -// }); - -// // ---------- Hotel Slider ----------- - -// const hotelSlider = new Swiper('.hotel-slider', { -// // Optional parameters -// loop: true, - -// // Navigation arrows -// navigation: { -// nextEl: '.hotel-slider__button--next', -// prevEl: '.hotel-slider__button--prev', -// }, - -// speed: 700, -// autoplay: {delay: 5000}, - -// // Переключение слайдера клавиатурой -// keyboard: { -// enabled: true, -// onlyInViewport: false, -// }, -// }); - -// const reviewSlider = new Swiper('.reviews-slider', { -// // Optional parameters -// loop: true, - -// // Navigation arrows -// navigation: { -// nextEl: '.reviews-slider__button--next', -// prevEl: '.reviews-slider__button--prev', -// }, -// autoHeight: true, -// // speed: 500, -// // autoplay: {delay: 4000}, - -// // Переключение слайдера клавиатурой -// keyboard: { -// enabled: true, -// onlyInViewport: false, -// }, -// }); - -// // ---------- Modal Window ----------- - -// var modalButton = $('[data-toggle=modal]'); -// var closeModalButton = $('.modal__close'); -// modalButton.on('click', openModal); -// closeModalButton.on('click', closeModal); - -// var modalOverlay = $('.modal__overlay'); -// var modalDialog = $('.modal__dialog'); - -// function openModal() { -// modalOverlay.addClass("modal__overlay--visible"); -// modalDialog.addClass("modal__dialog--visible"); - -// $('body').addClass('hold'); -// }; - - -// function closeModal(event) { -// event.preventDefault(); -// modalOverlay.removeClass("modal__overlay--visible"); -// modalDialog.removeClass("modal__dialog--visible"); - -// $('body').removeClass('hold'); -// }; - -// $('.modal').on('click', function(event) { -// modalDialog.removeClass('modal__dialog--visible'); -// modalOverlay.removeClass('modal__overlay--visible'); -// $('body').removeClass('hold'); -// }); - -// $(document).on('keydown', function(event) { -// if (event.code == 'Escape') { -// modalDialog.removeClass('modal__dialog--visible'); -// modalOverlay.removeClass('modal__overlay--visible'); -// $('body').removeClass('hold'); -// } -// }); - -// $('.modal__dialog').on('click', function(event) { -// event.stopPropagation(); -// }); - -// // ---------- Form Validation ----------- - -// jQuery.validator.addMethod( -// "emailcorect", -// function (value, element) { -// return ( -// this.optional(element) || -// /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i.test( -// value -// ) -// ); -// }, -// "Email format: name@domain.com" -// ); - -// $(".form").each(function () { -// $(this).validate({ -// errorClass: "invalid", -// rules: { -// mail: { -// emailcorect: true, -// }, -// }, -// messages: { -// name: { -// required: "Please specify your name", -// minlength: "Name must be at least 2 letters long", -// }, -// phone: { -// required: "Please specify your phone number", -// minlength: "Your phone must be 11 digits long", -// }, -// mail: { -// required: "We need your email address to contact you", -// email: "This email is not correct", -// }, -// }, -// }); -// }); -// $(document).ready(function () { -// $(".input-phone").mask("+7 (000) 000-00-00"); -// }); -// AOS.init(); - -// }); \ No newline at end of file diff --git a/js/main.js b/js/main.js index 6a0a95b..aec81bf 100644 --- a/js/main.js +++ b/js/main.js @@ -1,12 +1,265 @@ -// ---------- JQuery ----------- - -// $(document).ready(function(){ - - // ---------- Burger Menu ----------- + // JQuery + $(document).ready(function(){ + // Burger Menu var menuButton = document.querySelector(".burger-button"); menuButton.addEventListener("click", function () { document.querySelector(".header__burger-menu").classList.toggle("header__burger-menu--visible"); - console.log('click'); + $('body').toggleClass('hold'); + }); + + $(function () { + $("a[href^='#recommend']").click(function () { + var _href = $(this).attr("href"); + $("html, body").animate( + { scrollTop: $(_href).offset().top + "px" }, + 1000 + ); + return false; + }); + }); + + $(function () { + $("a[href^='#books']").click(function () { + var _href = $(this).attr("href"); + $("html, body").animate( + { scrollTop: $(_href).offset().top + "px" }, + 1000 + ); + return false; + }); + }); + + $(function () { + $("a[href^='#blog']").click(function () { + var _href = $(this).attr("href"); + $("html, body").animate( + { scrollTop: $(_href).offset().top + "px" }, + 1000 + ); + return false; + }); + }); + + // Likes + document.querySelectorAll(".icon-like").forEach((button) => { + button.addEventListener("click", (e) => { + if (button.getAttribute("fill") === "#959EAD") { + button.setAttribute("fill", "#DC143C"); + } else if (button.getAttribute("fill") === "#DC143C") { + button.setAttribute("fill", "#959EAD"); + } + }); +}); + + // Slider 1 + const sectionsSlider = new Swiper('.sections__slider', { + slidesPerView: 4, + spaceBetween: 26, + breakpoints: { + 320: { + slidesPerView: 2, + spaceBetween: 10, + slidesPerColumn: 2, + slidesPerColumnFill: 'row', + }, + 568: { + slidesPerView: 2, + spaceBetween: 26, + }, + 769: { + slidesPerView: 3, + spaceBetween: 26, + }, + 993: { + slidesPerView: 4, + spaceBetween: 26, + }, + }, + loop: false, + watchOverflow: true, + autoHaight: false, + + // Navigation arrows + navigation: { + nextEl: '.sections__slider-button--next', + prevEl: '.sections__slider-button--prev', + }, + // Keyboard control + keyboard: { + enabled: true, + onlyInViewport: false, + }, + }); + + // Slider 2 + const swiperUnreleased = new Swiper(".unreleased-container", { + slidesPerView: "auto", + + // Navigation arrows + navigation: { + nextEl: ".unreleased-button--next", + prevEl: ".unreleased-button--prev", + }, + + // Keyboard control + keyboard: { + enabled: true, + }, + }); + + // Main Video + $(".video-play-main").on("click", function onYouTubeIframeAPIReady() { + player = new YT.Player("main-player", { + videoId: "F8MN0o6RS9o", + width: '100%', + height: '100%', + events: { + onReady: videoPlay, + }, + }); + }); + function videoPlay(event) { + event.target.playVideo(); + event.target.setVolume(10); + } + + // Video 2 + $(".video-play-2").on("click", function onYouTubeIframeAPIReady() { + player = new YT.Player("video-two", { + videoId: "I-zPNQYHSvU", + width: '100%', + height: '100%', + events: { + onReady: videoPlay, + }, + }); + }); + + // Video 3 + $(".video-play-3").on("click", function onYouTubeIframeAPIReady() { + player = new YT.Player("video-three", { + videoId: "6vnxzfejWN4", + width: '100%', + height: '100%', + events: { + onReady: videoPlay, + }, + }); + }); + + // Video 4 + $(".video-play-4").on("click", function onYouTubeIframeAPIReady() { + player = new YT.Player("video-four", { + videoId: "vd205Q_EE18", + width: '100%', + height: '100%', + events: { + onReady: videoPlay, + }, + }); + }); + // Modal Window + + var modalButton = $('[data-toggle=modal]'); + var closeModalButton = $('.modal__close'); + modalButton.on('click', openModal); + closeModalButton.on('click', closeModal); + + var modalOverlay = $('.modal__overlay'); + var modalDialog = $('.modal__dialog'); + + function openModal() { + modalOverlay.addClass("modal__overlay--visible"); + modalDialog.addClass("modal__dialog--visible"); + $('body').addClass('hold'); + }; + + function closeModal(event) { + event.preventDefault(); + modalOverlay.removeClass("modal__overlay--visible"); + modalDialog.removeClass("modal__dialog--visible"); + + $('body').removeClass('hold'); + }; + + $('.modal').on('click', function(event) { + modalDialog.removeClass('modal__dialog--visible'); + modalOverlay.removeClass('modal__overlay--visible'); + $('body').removeClass('hold'); + }); + + $(document).on('keydown', function(event) { + if (event.code == 'Escape') { + modalDialog.removeClass('modal__dialog--visible'); + modalOverlay.removeClass('modal__overlay--visible'); + $('body').removeClass('hold'); + }; + }); + + $('.modal__dialog').on('click', function(event) { + event.stopPropagation(); + }); + jQuery.validator.addMethod( + "emailcorect", + function (value, element) { + return ( + this.optional(element) || + /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i.test( + value + ) + ); + }, + "Email format: name@domain.com" + ); + + $(".form").each(function () { + $(this).validate({ + errorClass: "invalid", + rules: { + mail: { + emailcorect: true, + }, + }, + messages: { + name: { + required: "Введите свое имя", + minlength: "Не менее двух символов", + }, + phone: { + required: "Укажите ваш телефон", + minlength: "Не менее 11 символов", + }, + mail: { + required: "Укажите ваш Email", + email: "Имя почты не верно", + }, + }, + }); + }); + $(".input-phone").mask("+7 (000) 000-00-00"); + $(document).ready(function () { + + function trackScroll() { + var scrolled = window.pageYOffset; + var coords = document.documentElement.clientHeight; + + if (scrolled > coords) { + goTopBtn.classList.add('button-to-top-show'); + } + if (scrolled < coords) { + goTopBtn.classList.remove('button-to-top-show'); + } + } + function backToTop() { + if (window.pageYOffset > 0) { + window.scrollBy(0, -80); + setTimeout(backToTop, 10); + } + } + var goTopBtn = document.querySelector('.button-to-top'); + + window.addEventListener('scroll', trackScroll); + goTopBtn.addEventListener('click', backToTop); }); -// }); \ No newline at end of file +}); diff --git a/js/swiper-bundle.min.js b/js/swiper-bundle.min.js new file mode 100644 index 0000000..f11747a --- /dev/null +++ b/js/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 6.7.5 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2021 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 1, 2021 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e,t){for(var a=0;a0&&i(e[s],t[s])}))}var s={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function r(){var e="undefined"!=typeof document?document:{};return i(e,s),e}var n={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}},requestAnimationFrame:function(e){return"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame:function(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function l(){var e="undefined"!=typeof window?window:{};return i(e,n),e}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function u(e,t,a){return(u=p()?Reflect.construct:function(e,t,a){var i=[null];i.push.apply(i,t);var s=new(Function.bind.apply(e,i));return a&&d(s,a.prototype),s}).apply(null,arguments)}function c(e){var t="function"==typeof Map?new Map:void 0;return(c=function(e){if(null===e||(a=e,-1===Function.toString.call(a).indexOf("[native code]")))return e;var a;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return u(e,arguments,o(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),d(i,e)})(e)}var h=function(e){var t,a;function i(t){var a,i,s;return a=e.call.apply(e,[this].concat(t))||this,i=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(a),s=i.__proto__,Object.defineProperty(i,"__proto__",{get:function(){return s},set:function(e){s.__proto__=e}}),a}return a=e,(t=i).prototype=Object.create(a.prototype),t.prototype.constructor=t,t.__proto__=a,i}(c(Array));function v(e){void 0===e&&(e=[]);var t=[];return e.forEach((function(e){Array.isArray(e)?t.push.apply(t,v(e)):t.push(e)})),t}function f(e,t){return Array.prototype.filter.call(e,t)}function m(e,t){var a=l(),i=r(),s=[];if(!t&&e instanceof h)return e;if(!e)return new h(s);if("string"==typeof e){var n=e.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){var o="div";0===n.indexOf("0})).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),a=0;a=0;h-=1){var v=c[h];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(u.removeEventListener(d,v.proxyListener,n),c.splice(h,1)):r||(u.removeEventListener(d,v.proxyListener,n),c.splice(h,1))}}return this},trigger:function(){for(var e=l(),t=arguments.length,a=new Array(t),i=0;i0})),p.dispatchEvent(u),p.dom7EventData=[],delete p.dom7EventData}}return this},transitionEnd:function(e){var t=this;return e&&t.on("transitionend",(function a(i){i.target===this&&(e.call(this,i),t.off("transitionend",a))})),this},outerWidth:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){var e=l();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){var e=l(),t=r(),a=this[0],i=a.getBoundingClientRect(),s=t.body,n=a.clientTop||s.clientTop||0,o=a.clientLeft||s.clientLeft||0,d=a===e?e.scrollY:a.scrollTop,p=a===e?e.scrollX:a.scrollLeft;return{top:i.top+d-n,left:i.left+p-o}}return null},css:function(e,t){var a,i=l();if(1===arguments.length){if("string"!=typeof e){for(a=0;at-1)return m([]);if(e<0){var a=t+e;return m(a<0?[]:[this[a]])}return m([this[e]])},append:function(){for(var e,t=r(),a=0;a=0;a-=1)this[t].insertBefore(s.childNodes[a],this[t].childNodes[0])}else if(e instanceof h)for(a=0;a0?e?this[0].nextElementSibling&&m(this[0].nextElementSibling).is(e)?m([this[0].nextElementSibling]):m([]):this[0].nextElementSibling?m([this[0].nextElementSibling]):m([]):m([])},nextAll:function(e){var t=[],a=this[0];if(!a)return m([]);for(;a.nextElementSibling;){var i=a.nextElementSibling;e?m(i).is(e)&&t.push(i):t.push(i),a=i}return m(t)},prev:function(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&m(t.previousElementSibling).is(e)?m([t.previousElementSibling]):m([]):t.previousElementSibling?m([t.previousElementSibling]):m([])}return m([])},prevAll:function(e){var t=[],a=this[0];if(!a)return m([]);for(;a.previousElementSibling;){var i=a.previousElementSibling;e?m(i).is(e)&&t.push(i):t.push(i),a=i}return m(t)},parent:function(e){for(var t=[],a=0;a6&&(i=i.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),s=new r.WebKitCSSMatrix("none"===i?"":i)):a=(s=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(i=r.WebKitCSSMatrix?s.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=r.WebKitCSSMatrix?s.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function C(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function S(){for(var e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"],a="undefined"!=typeof window?window.HTMLElement:void 0,i=1;i=0,observer:"MutationObserver"in e||"WebkitMutationObserver"in e,passiveListener:function(){var t=!1;try{var a=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassiveListener",null,a)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),g}function $(e){return void 0===e&&(e={}),b||(b=function(e){var t=(void 0===e?{}:e).userAgent,a=k(),i=l(),s=i.navigator.platform,r=t||i.navigator.userAgent,n={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=r.match(/(Android);?[\s\/]+([\d.]+)?/),u=r.match(/(iPad).*OS\s([\d_]+)/),c=r.match(/(iPod)(.*OS\s([\d_]+))?/),h=!u&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),v="Win32"===s,f="MacIntel"===s;return!u&&f&&a.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(o+"x"+d)>=0&&((u=r.match(/(Version)\/([\d.]+)/))||(u=[0,1,"13_0_0"]),f=!1),p&&!v&&(n.os="android",n.android=!0),(u||h||c)&&(n.os="ios",n.ios=!0),n}(e)),b}function L(){return w||(w=function(){var e,t=l();return{isEdge:!!t.navigator.userAgent.match(/Edge/g),isSafari:(e=t.navigator.userAgent.toLowerCase(),e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)}}()),w}Object.keys(y).forEach((function(e){Object.defineProperty(m.fn,e,{value:y[e],writable:!0})}));var I={name:"resize",create:function(){var e=this;S(e,{resize:{observer:null,createObserver:function(){e&&!e.destroyed&&e.initialized&&(e.resize.observer=new ResizeObserver((function(t){var a=e.width,i=e.height,s=a,r=i;t.forEach((function(t){var a=t.contentBoxSize,i=t.contentRect,n=t.target;n&&n!==e.el||(s=i?i.width:(a[0]||a).inlineSize,r=i?i.height:(a[0]||a).blockSize)})),s===a&&r===i||e.resize.resizeHandler()})),e.resize.observer.observe(e.el))},removeObserver:function(){e.resize.observer&&e.resize.observer.unobserve&&e.el&&(e.resize.observer.unobserve(e.el),e.resize.observer=null)},resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(e){var t=l();e.params.resizeObserver&&void 0!==l().ResizeObserver?e.resize.createObserver():(t.addEventListener("resize",e.resize.resizeHandler),t.addEventListener("orientationchange",e.resize.orientationChangeHandler))},destroy:function(e){var t=l();e.resize.removeObserver(),t.removeEventListener("resize",e.resize.resizeHandler),t.removeEventListener("orientationchange",e.resize.orientationChangeHandler)}}},O={attach:function(e,t){void 0===t&&(t={});var a=l(),i=this,s=new(a.MutationObserver||a.WebkitMutationObserver)((function(e){if(1!==e.length){var t=function(){i.emit("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(t):a.setTimeout(t,0)}else i.emit("observerUpdate",e[0])}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),i.observer.observers.push(s)},init:function(){var e=this;if(e.support.observer&&e.params.observer){if(e.params.observeParents)for(var t=e.$el.parents(),a=0;a0))if(!s.isTouched||!s.isMoved)if(!!n.noSwipingClass&&""!==n.noSwipingClass&&d.target&&d.target.shadowRoot&&e.path&&e.path[0]&&(p=m(e.path[0])),n.noSwiping&&p.closest(n.noSwipingSelector?n.noSwipingSelector:"."+n.noSwipingClass)[0])t.allowClick=!0;else if(!n.swipeHandler||p.closest(n.swipeHandler)[0]){o.currentX="touchstart"===d.type?d.targetTouches[0].pageX:d.pageX,o.currentY="touchstart"===d.type?d.targetTouches[0].pageY:d.pageY;var u=o.currentX,c=o.currentY,h=n.edgeSwipeDetection||n.iOSEdgeSwipeDetection,v=n.edgeSwipeThreshold||n.iOSEdgeSwipeThreshold;if(h&&(u<=v||u>=i.innerWidth-v)){if("prevent"!==h)return;e.preventDefault()}if(S(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=u,o.startY=c,s.touchStartTime=x(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(s.allowThresholdMove=!1),"touchstart"!==d.type){var f=!0;p.is(s.focusableElements)&&(f=!1),a.activeElement&&m(a.activeElement).is(s.focusableElements)&&a.activeElement!==p[0]&&a.activeElement.blur();var g=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!g||p[0].isContentEditable||d.preventDefault()}t.emit("touchStart",d)}}}function N(e){var t=r(),a=this,i=a.touchEventsData,s=a.params,n=a.touches,l=a.rtlTranslate;if(a.enabled){var o=e;if(o.originalEvent&&(o=o.originalEvent),i.isTouched){if(!i.isTouchEvent||"touchmove"===o.type){var d="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),p="touchmove"===o.type?d.pageX:o.pageX,u="touchmove"===o.type?d.pageY:o.pageY;if(o.preventedByNestedSwiper)return n.startX=p,void(n.startY=u);if(!a.allowTouchMove)return a.allowClick=!1,void(i.isTouched&&(S(n,{startX:p,startY:u,currentX:p,currentY:u}),i.touchStartTime=x()));if(i.isTouchEvent&&s.touchReleaseOnEdges&&!s.loop)if(a.isVertical()){if(un.startY&&a.translate>=a.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(pn.startX&&a.translate>=a.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&o.target===t.activeElement&&m(o.target).is(i.focusableElements))return i.isMoved=!0,void(a.allowClick=!1);if(i.allowTouchCallbacks&&a.emit("touchMove",o),!(o.targetTouches&&o.targetTouches.length>1)){n.currentX=p,n.currentY=u;var c=n.currentX-n.startX,h=n.currentY-n.startY;if(!(a.params.threshold&&Math.sqrt(Math.pow(c,2)+Math.pow(h,2))=25&&(v=180*Math.atan2(Math.abs(h),Math.abs(c))/Math.PI,i.isScrolling=a.isHorizontal()?v>s.touchAngle:90-v>s.touchAngle);if(i.isScrolling&&a.emit("touchMoveOpposite",o),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)i.isTouched=!1;else if(i.startMoving){a.allowClick=!1,!s.cssMode&&o.cancelable&&o.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&o.stopPropagation(),i.isMoved||(s.loop&&a.loopFix(),i.startTranslate=a.getTranslate(),a.setTransition(0),a.animating&&a.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!s.grabCursor||!0!==a.allowSlideNext&&!0!==a.allowSlidePrev||a.setGrabCursor(!0),a.emit("sliderFirstMove",o)),a.emit("sliderMove",o),i.isMoved=!0;var f=a.isHorizontal()?c:h;n.diff=f,f*=s.touchRatio,l&&(f=-f),a.swipeDirection=f>0?"prev":"next",i.currentTranslate=f+i.startTranslate;var g=!0,b=s.resistanceRatio;if(s.touchReleaseOnEdges&&(b=0),f>0&&i.currentTranslate>a.minTranslate()?(g=!1,s.resistance&&(i.currentTranslate=a.minTranslate()-1+Math.pow(-a.minTranslate()+i.startTranslate+f,b))):f<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),a.allowSlidePrev||a.allowSlideNext||(i.currentTranslate=i.startTranslate),s.threshold>0){if(!(Math.abs(f)>s.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=a.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}s.followFinger&&!s.cssMode&&((s.freeMode||s.watchSlidesProgress||s.watchSlidesVisibility)&&(a.updateActiveIndex(),a.updateSlidesClasses()),s.freeMode&&(0===i.velocities.length&&i.velocities.push({position:n[a.isHorizontal()?"startX":"startY"],time:i.touchStartTime}),i.velocities.push({position:n[a.isHorizontal()?"currentX":"currentY"],time:x()})),a.updateProgress(i.currentTranslate),a.setTranslate(i.currentTranslate))}}}}}else i.startMoving&&i.isScrolling&&a.emit("touchMoveOpposite",o)}}function G(e){var t=this,a=t.touchEventsData,i=t.params,s=t.touches,r=t.rtlTranslate,n=t.$wrapperEl,l=t.slidesGrid,o=t.snapGrid;if(t.enabled){var d=e;if(d.originalEvent&&(d=d.originalEvent),a.allowTouchCallbacks&&t.emit("touchEnd",d),a.allowTouchCallbacks=!1,!a.isTouched)return a.isMoved&&i.grabCursor&&t.setGrabCursor(!1),a.isMoved=!1,void(a.startMoving=!1);i.grabCursor&&a.isMoved&&a.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var p,u=x(),c=u-a.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(d),t.emit("tap click",d),c<300&&u-a.lastClickTime<300&&t.emit("doubleTap doubleClick",d)),a.lastClickTime=x(),E((function(){t.destroyed||(t.allowClick=!0)})),!a.isTouched||!a.isMoved||!t.swipeDirection||0===s.diff||a.currentTranslate===a.startTranslate)return a.isTouched=!1,a.isMoved=!1,void(a.startMoving=!1);if(a.isTouched=!1,a.isMoved=!1,a.startMoving=!1,p=i.followFinger?r?t.translate:-t.translate:-a.currentTranslate,!i.cssMode)if(i.freeMode){if(p<-t.minTranslate())return void t.slideTo(t.activeIndex);if(p>-t.maxTranslate())return void(t.slides.length1){var h=a.velocities.pop(),v=a.velocities.pop(),f=h.position-v.position,m=h.time-v.time;t.velocity=f/m,t.velocity/=2,Math.abs(t.velocity)150||x()-h.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeModeMomentumVelocityRatio,a.velocities.length=0;var g=1e3*i.freeModeMomentumRatio,b=t.velocity*g,w=t.translate+b;r&&(w=-w);var y,T,C=!1,S=20*Math.abs(t.velocity)*i.freeModeMomentumBounceRatio;if(wt.minTranslate())i.freeModeMomentumBounce?(w-t.minTranslate()>S&&(w=t.minTranslate()+S),y=t.minTranslate(),C=!0,a.allowMomentumBounce=!0):w=t.minTranslate(),i.loop&&i.centeredSlides&&(T=!0);else if(i.freeModeSticky){for(var M,z=0;z-w){M=z;break}w=-(w=Math.abs(o[M]-w)=i.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var $=0,L=t.slidesSizesGrid[0],I=0;I=l[I]&&p=l[I]&&($=I,L=l[l.length-1]-l[l.length-2])}var A=(p-l[$])/L,D=$i.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(A>=i.longSwipesRatio?t.slideTo($+D):t.slideTo($)),"prev"===t.swipeDirection&&(A>1-i.longSwipesRatio?t.slideTo($+D):t.slideTo($))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(d.target===t.navigation.nextEl||d.target===t.navigation.prevEl)?d.target===t.navigation.nextEl?t.slideTo($+D):t.slideTo($):("next"===t.swipeDirection&&t.slideTo($+D),"prev"===t.swipeDirection&&t.slideTo($))}}}}function B(){var e=this,t=e.params,a=e.el;if(!a||0!==a.offsetWidth){t.breakpoints&&e.setBreakpoint();var i=e.allowSlideNext,s=e.allowSlidePrev,r=e.snapGrid;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=s,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}}function H(e){var t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function X(){var e=this,t=e.wrapperEl,a=e.rtlTranslate;if(e.enabled){e.previousTranslate=e.translate,e.isHorizontal()?e.translate=a?t.scrollWidth-t.offsetWidth-t.scrollLeft:-t.scrollLeft:e.translate=-t.scrollTop,-0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();var i=e.maxTranslate()-e.minTranslate();(0===i?0:(e.translate-e.minTranslate())/i)!==e.progress&&e.updateProgress(a?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}}var R=!1;function Y(){}var V={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!1,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1},W={modular:{useParams:function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(a){var i=t.modules[a];i.params&&S(e,i.params)}))},useModules:function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(a){var i=t.modules[a],s=e[a]||{};i.on&&t.on&&Object.keys(i.on).forEach((function(e){t.on(e,i.on[e])})),i.create&&i.create.bind(t)(s)}))}},eventsEmitter:{on:function(e,t,a){var i=this;if("function"!=typeof t)return i;var s=a?"unshift":"push";return e.split(" ").forEach((function(e){i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][s](t)})),i},once:function(e,t,a){var i=this;if("function"!=typeof t)return i;function s(){i.off(e,s),s.__emitterProxy&&delete s.__emitterProxy;for(var a=arguments.length,r=new Array(a),n=0;n=0&&t.eventsAnyListeners.splice(a,1),t},off:function(e,t){var a=this;return a.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?a.eventsListeners[e]=[]:a.eventsListeners[e]&&a.eventsListeners[e].forEach((function(i,s){(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&a.eventsListeners[e].splice(s,1)}))})),a):a},emit:function(){var e,t,a,i=this;if(!i.eventsListeners)return i;for(var s=arguments.length,r=new Array(s),n=0;n=0&&(w=parseFloat(w.replace("%",""))/100*r),e.virtualSize=-w,n?p.css({marginLeft:"",marginTop:""}):p.css({marginRight:"",marginBottom:""}),i.slidesPerColumn>1&&(T=Math.floor(u/i.slidesPerColumn)===u/e.params.slidesPerColumn?u:Math.ceil(u/i.slidesPerColumn)*i.slidesPerColumn,"auto"!==i.slidesPerView&&"row"===i.slidesPerColumnFill&&(T=Math.max(T,i.slidesPerView*i.slidesPerColumn)));for(var M,z,P,k=i.slidesPerColumn,$=T/k,L=Math.floor(u/i.slidesPerColumn),I=0;I1){var A=void 0,D=void 0,N=void 0;if("row"===i.slidesPerColumnFill&&i.slidesPerGroup>1){var G=Math.floor(I/(i.slidesPerGroup*i.slidesPerColumn)),B=I-i.slidesPerColumn*i.slidesPerGroup*G,H=0===G?i.slidesPerGroup:Math.min(Math.ceil((u-G*k*i.slidesPerGroup)/k),i.slidesPerGroup);A=(D=B-(N=Math.floor(B/H))*H+G*i.slidesPerGroup)+N*T/k,O.css({"-webkit-box-ordinal-group":A,"-moz-box-ordinal-group":A,"-ms-flex-order":A,"-webkit-order":A,order:A})}else"column"===i.slidesPerColumnFill?(N=I-(D=Math.floor(I/k))*k,(D>L||D===L&&N===k-1)&&(N+=1)>=k&&(N=0,D+=1)):D=I-(N=Math.floor(I/$))*$;O.css(t("margin-top"),0!==N?i.spaceBetween&&i.spaceBetween+"px":"")}if("none"!==O.css("display")){if("auto"===i.slidesPerView){var X=getComputedStyle(O[0]),R=O[0].style.transform,Y=O[0].style.webkitTransform;if(R&&(O[0].style.transform="none"),Y&&(O[0].style.webkitTransform="none"),i.roundLengths)C=e.isHorizontal()?O.outerWidth(!0):O.outerHeight(!0);else{var V=a(X,"width"),W=a(X,"padding-left"),F=a(X,"padding-right"),_=a(X,"margin-left"),q=a(X,"margin-right"),j=X.getPropertyValue("box-sizing");if(j&&"border-box"===j)C=V+_+q;else{var U=O[0],K=U.clientWidth;C=V+W+F+_+q+(U.offsetWidth-K)}}R&&(O[0].style.transform=R),Y&&(O[0].style.webkitTransform=Y),i.roundLengths&&(C=Math.floor(C))}else C=(r-(i.slidesPerView-1)*w)/i.slidesPerView,i.roundLengths&&(C=Math.floor(C)),p[I]&&(p[I].style[t("width")]=C+"px");p[I]&&(p[I].swiperSlideSize=C),v.push(C),i.centeredSlides?(y=y+C/2+E/2+w,0===E&&0!==I&&(y=y-r/2-w),0===I&&(y=y-r/2-w),Math.abs(y)<.001&&(y=0),i.roundLengths&&(y=Math.floor(y)),x%i.slidesPerGroup==0&&c.push(y),h.push(y)):(i.roundLengths&&(y=Math.floor(y)),(x-Math.min(e.params.slidesPerGroupSkip,x))%e.params.slidesPerGroup==0&&c.push(y),h.push(y),y=y+C+w),e.virtualSize+=C+w,E=C,x+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+m,n&&l&&("slide"===i.effect||"coverflow"===i.effect)&&s.css({width:e.virtualSize+i.spaceBetween+"px"}),i.setWrapperSize)s.css(((z={})[t("width")]=e.virtualSize+i.spaceBetween+"px",z));if(i.slidesPerColumn>1)if(e.virtualSize=(C+i.spaceBetween)*T,e.virtualSize=Math.ceil(e.virtualSize/i.slidesPerColumn)-i.spaceBetween,s.css(((P={})[t("width")]=e.virtualSize+i.spaceBetween+"px",P)),i.centeredSlides){M=[];for(var Z=0;Z1&&c.push(e.virtualSize-r)}if(0===c.length&&(c=[0]),0!==i.spaceBetween){var te,ae=e.isHorizontal()&&n?"marginLeft":t("marginRight");p.filter((function(e,t){return!i.cssMode||t!==p.length-1})).css(((te={})[ae]=w+"px",te))}if(i.centeredSlides&&i.centeredSlidesBounds){var ie=0;v.forEach((function(e){ie+=e+(i.spaceBetween?i.spaceBetween:0)}));var se=(ie-=i.spaceBetween)-r;c=c.map((function(e){return e<0?-f:e>se?se+m:e}))}if(i.centerInsufficientSlides){var re=0;if(v.forEach((function(e){re+=e+(i.spaceBetween?i.spaceBetween:0)})),(re-=i.spaceBetween)1)if(a.params.centeredSlides)a.visibleSlides.each((function(e){i.push(e)}));else for(t=0;ta.slides.length&&!s)break;i.push(n(l))}else i.push(n(a.activeIndex));for(t=0;tr?o:r}r&&a.$wrapperEl.css("height",r+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t=0&&d1&&p<=t.size||d<=0&&p>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(n),i.eq(n).addClass(a.slideVisibleClass))}l.progress=s?-o:o}t.visibleSlides=m(t.visibleSlides)}},updateProgress:function(e){var t=this;if(void 0===e){var a=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*a||0}var i=t.params,s=t.maxTranslate()-t.minTranslate(),r=t.progress,n=t.isBeginning,l=t.isEnd,o=n,d=l;0===s?(r=0,n=!0,l=!0):(n=(r=(e-t.minTranslate())/s)<=0,l=r>=1),S(t,{progress:r,isBeginning:n,isEnd:l}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),l&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!l)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){var e,t=this,a=t.slides,i=t.params,s=t.$wrapperEl,r=t.activeIndex,n=t.realIndex,l=t.virtual&&i.virtual.enabled;a.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=l?t.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+r+'"]'):a.eq(r)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+n+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+n+'"]').addClass(i.slideDuplicateActiveClass));var o=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===o.length&&(o=a.eq(0)).addClass(i.slideNextClass);var d=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===d.length&&(d=a.eq(-1)).addClass(i.slidePrevClass),i.loop&&(o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),d.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+d.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+d.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass)),t.emitSlidesClasses()},updateActiveIndex:function(e){var t,a=this,i=a.rtlTranslate?a.translate:-a.translate,s=a.slidesGrid,r=a.snapGrid,n=a.params,l=a.activeIndex,o=a.realIndex,d=a.snapIndex,p=e;if(void 0===p){for(var u=0;u=s[u]&&i=s[u]&&i=s[u]&&(p=u);n.normalizeSlideIndex&&(p<0||void 0===p)&&(p=0)}if(r.indexOf(i)>=0)t=r.indexOf(i);else{var c=Math.min(n.slidesPerGroupSkip,p);t=c+Math.floor((p-c)/n.slidesPerGroup)}if(t>=r.length&&(t=r.length-1),p!==l){var h=parseInt(a.slides.eq(p).attr("data-swiper-slide-index")||p,10);S(a,{snapIndex:t,realIndex:h,previousIndex:l,activeIndex:p}),a.emit("activeIndexChange"),a.emit("snapIndexChange"),o!==h&&a.emit("realIndexChange"),(a.initialized||a.params.runCallbacksOnInit)&&a.emit("slideChange")}else t!==d&&(a.snapIndex=t,a.emit("snapIndexChange"))},updateClickedSlide:function(e){var t,a=this,i=a.params,s=m(e.target).closest("."+i.slideClass)[0],r=!1;if(s)for(var n=0;nd?d:i&&er?"next":is?"next":i=d.length&&(g=d.length-1),(c||o.initialSlide||0)===(u||0)&&a&&n.emit("beforeSlideChangeStart");var b,w=-d[g];if(n.updateProgress(w),o.normalizeSlideIndex)for(var y=0;y=x&&E=x&&E=x&&(l=y)}if(n.initialized&&l!==c){if(!n.allowSlideNext&&wn.translate&&w>n.maxTranslate()&&(c||0)!==l)return!1}if(b=l>c?"next":l=e&&(h=e)})),void 0!==h&&(p=l.indexOf(h))<0&&(p=i.activeIndex-1),i.slideTo(p,e,t,a)},slideReset:function(e,t,a){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,a)},slideToClosest:function(e,t,a,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);var s=this,r=s.activeIndex,n=Math.min(s.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/s.params.slidesPerGroup),o=s.rtlTranslate?s.translate:-s.translate;if(o>=s.snapGrid[l]){var d=s.snapGrid[l];o-d>(s.snapGrid[l+1]-d)*i&&(r+=s.params.slidesPerGroup)}else{var p=s.snapGrid[l-1];o-p<=(s.snapGrid[l]-p)*i&&(r-=s.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,s.slidesGrid.length-1),s.slideTo(r,e,t,a)},slideToClickedSlide:function(){var e,t=this,a=t.params,i=t.$wrapperEl,s="auto"===a.slidesPerView?t.slidesPerViewDynamic():a.slidesPerView,r=t.clickedIndex;if(a.loop){if(t.animating)return;e=parseInt(m(t.clickedSlide).attr("data-swiper-slide-index"),10),a.centeredSlides?rt.slides.length-t.loopedSlides+s/2?(t.loopFix(),r=i.children("."+a.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+a.slideDuplicateClass+")").eq(0).index(),E((function(){t.slideTo(r)}))):t.slideTo(r):r>t.slides.length-s?(t.loopFix(),r=i.children("."+a.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+a.slideDuplicateClass+")").eq(0).index(),E((function(){t.slideTo(r)}))):t.slideTo(r)}else t.slideTo(r)}},loop:{loopCreate:function(){var e=this,t=r(),a=e.params,i=e.$wrapperEl;i.children("."+a.slideClass+"."+a.slideDuplicateClass).remove();var s=i.children("."+a.slideClass);if(a.loopFillGroupWithBlank){var n=a.slidesPerGroup-s.length%a.slidesPerGroup;if(n!==a.slidesPerGroup){for(var l=0;ls.length&&(e.loopedSlides=s.length);var d=[],p=[];s.each((function(t,a){var i=m(t);a=s.length-e.loopedSlides&&d.push(t),i.attr("data-swiper-slide-index",a)}));for(var u=0;u=0;c-=1)i.prepend(m(d[c].cloneNode(!0)).addClass(a.slideDuplicateClass))},loopFix:function(){var e=this;e.emit("beforeLoopFix");var t,a=e.activeIndex,i=e.slides,s=e.loopedSlides,r=e.allowSlidePrev,n=e.allowSlideNext,l=e.snapGrid,o=e.rtlTranslate;e.allowSlidePrev=!0,e.allowSlideNext=!0;var d=-l[a]-e.getTranslate();if(a=i.length-s){t=-i.length+a+s,t+=s,e.slideTo(t,0,!1,!0)&&0!==d&&e.setTranslate((o?-e.translate:e.translate)-d)}e.allowSlidePrev=r,e.allowSlideNext=n,e.emit("loopFix")},loopDestroy:function(){var e=this,t=e.$wrapperEl,a=e.params,i=e.slides;t.children("."+a.slideClass+"."+a.slideDuplicateClass+",."+a.slideClass+"."+a.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}},grabCursor:{setGrabCursor:function(e){var t=this;if(!(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)){var a=t.el;a.style.cursor="move",a.style.cursor=e?"-webkit-grabbing":"-webkit-grab",a.style.cursor=e?"-moz-grabbin":"-moz-grab",a.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){var e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.el.style.cursor="")}},manipulation:{appendSlide:function(e){var t=this,a=t.$wrapperEl,i=t.params;if(i.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s=n)a.appendSlide(t);else{for(var l=r>e?r+1:r,o=[],d=n-1;d>=e;d-=1){var p=a.slides.eq(d);p.remove(),o.unshift(p)}if("object"==typeof t&&"length"in t){for(var u=0;ue?r+t.length:r}else i.append(t);for(var c=0;c1,c=p.slidesPerColumn>1,h=r.enabled;u&&!c?(n.removeClass(r.containerModifierClass+"multirow "+r.containerModifierClass+"multirow-column"),e.emitContainerClasses()):!u&&c&&(n.addClass(r.containerModifierClass+"multirow"),"column"===p.slidesPerColumnFill&&n.addClass(r.containerModifierClass+"multirow-column"),e.emitContainerClasses());var v=p.direction&&p.direction!==r.direction,f=r.loop&&(p.slidesPerView!==r.slidesPerView||v);v&&a&&e.changeDirection(),S(e.params,p);var m=e.params.enabled;S(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),h&&!m?e.disable():!h&&m&&e.enable(),e.currentBreakpoint=o,e.emit("_beforeBreakpoint",p),f&&a&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-s+e.loopedSlides,0,!1)),e.emit("breakpoint",p)}}},getBreakpoint:function(e,t,a){if(void 0===t&&(t="window"),e&&("container"!==t||a)){var i=!1,s=l(),r="window"===t?s.innerHeight:a.clientHeight,n=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var t=parseFloat(e.substr(1));return{value:r*t,point:e}}return{value:e,point:e}}));n.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var o=0;o0&&t.slidesOffsetBefore+t.spaceBetween*(e.slides.length-1)+e.slides[0].offsetWidth*e.slides.length;t.slidesOffsetBefore&&t.slidesOffsetAfter&&i?e.isLocked=i<=e.size:e.isLocked=1===e.snapGrid.length,e.allowSlideNext=!e.isLocked,e.allowSlidePrev=!e.isLocked,a!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock"),a&&a!==e.isLocked&&(e.isEnd=!1,e.navigation&&e.navigation.update())}},classes:{addClasses:function(){var e,t,a,i=this,s=i.classNames,r=i.params,n=i.rtl,l=i.$el,o=i.device,d=i.support,p=(e=["initialized",r.direction,{"pointer-events":d.pointerEvents&&!d.touch},{"free-mode":r.freeMode},{autoheight:r.autoHeight},{rtl:n},{multirow:r.slidesPerColumn>1},{"multirow-column":r.slidesPerColumn>1&&"column"===r.slidesPerColumnFill},{android:o.android},{ios:o.ios},{"css-mode":r.cssMode}],t=r.containerModifierClass,a=[],e.forEach((function(e){"object"==typeof e?Object.keys(e).forEach((function(i){e[i]&&a.push(t+i)})):"string"==typeof e&&a.push(t+e)})),a);s.push.apply(s,p),l.addClass([].concat(s).join(" ")),i.emitContainerClasses()},removeClasses:function(){var e=this,t=e.$el,a=e.classNames;t.removeClass(a.join(" ")),e.emitContainerClasses()}},images:{loadImage:function(e,t,a,i,s,r){var n,o=l();function d(){r&&r()}m(e).parent("picture")[0]||e.complete&&s?d():t?((n=new o.Image).onload=d,n.onerror=d,i&&(n.sizes=i),a&&(n.srcset=a),t&&(n.src=t)):d()},preloadImages:function(){var e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var a=0;a1){var n=[];return m(a.el).each((function(e){var i=S({},a,{el:e});n.push(new t(i))})),n}var l=this;l.__swiper__=!0,l.support=k(),l.device=$({userAgent:a.userAgent}),l.browser=L(),l.eventsListeners={},l.eventsAnyListeners=[],void 0===l.modules&&(l.modules={}),Object.keys(l.modules).forEach((function(e){var t=l.modules[e];if(t.params){var i=Object.keys(t.params)[0],s=t.params[i];if("object"!=typeof s||null===s)return;if(["navigation","pagination","scrollbar"].indexOf(i)>=0&&!0===a[i]&&(a[i]={auto:!0}),!(i in a)||!("enabled"in s))return;!0===a[i]&&(a[i]={enabled:!0}),"object"!=typeof a[i]||"enabled"in a[i]||(a[i].enabled=!0),a[i]||(a[i]={enabled:!1})}}));var o,d,p=S({},V);return l.useParams(p),l.params=S({},p,F,a),l.originalParams=S({},l.params),l.passedParams=S({},a),l.params&&l.params.on&&Object.keys(l.params.on).forEach((function(e){l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),l.$=m,S(l,{enabled:l.params.enabled,el:e,classNames:[],slides:m(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===l.params.direction},isVertical:function(){return"vertical"===l.params.direction},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEvents:(o=["touchstart","touchmove","touchend","touchcancel"],d=["mousedown","mousemove","mouseup"],l.support.pointerEvents&&(d=["pointerdown","pointermove","pointerup"]),l.touchEventsTouch={start:o[0],move:o[1],end:o[2],cancel:o[3]},l.touchEventsDesktop={start:d[0],move:d[1],end:d[2]},l.support.touch||!l.params.simulateTouch?l.touchEventsTouch:l.touchEventsDesktop),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:x(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.useModules(),l.emit("_swiper"),l.params.init&&l.init(),l}var a,i,s,n=t.prototype;return n.enable=function(){var e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))},n.disable=function(){var e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))},n.setProgress=function(e,t){var a=this;e=Math.min(Math.max(e,0),1);var i=a.minTranslate(),s=(a.maxTranslate()-i)*e+i;a.translateTo(s,void 0===t?0:t),a.updateActiveIndex(),a.updateSlidesClasses()},n.emitContainerClasses=function(){var e=this;if(e.params._emitClasses&&e.el){var t=e.el.className.split(" ").filter((function(t){return 0===t.indexOf("swiper-container")||0===t.indexOf(e.params.containerModifierClass)}));e.emit("_containerClasses",t.join(" "))}},n.getSlideClasses=function(e){var t=this;return e.className.split(" ").filter((function(e){return 0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)})).join(" ")},n.emitSlidesClasses=function(){var e=this;if(e.params._emitClasses&&e.el){var t=[];e.slides.each((function(a){var i=e.getSlideClasses(a);t.push({slideEl:a,classNames:i}),e.emit("_slideClass",a,i)})),e.emit("_slideClasses",t)}},n.slidesPerViewDynamic=function(){var e=this,t=e.params,a=e.slides,i=e.slidesGrid,s=e.size,r=e.activeIndex,n=1;if(t.centeredSlides){for(var l,o=a[r].swiperSlideSize,d=r+1;ds&&(l=!0));for(var p=r-1;p>=0;p-=1)a[p]&&!l&&(n+=1,(o+=a[p].swiperSlideSize)>s&&(l=!0))}else for(var u=r+1;u1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||i(),a.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function i(){var t=e.rtlTranslate?-1*e.translate:e.translate,a=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(a),e.updateActiveIndex(),e.updateSlidesClasses()}},n.changeDirection=function(e,t){void 0===t&&(t=!0);var a=this,i=a.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(a.$el.removeClass(""+a.params.containerModifierClass+i).addClass(""+a.params.containerModifierClass+e),a.emitContainerClasses(),a.params.direction=e,a.slides.each((function(t){"vertical"===e?t.style.width="":t.style.height=""})),a.emit("changeDirection"),t&&a.update()),a},n.mount=function(e){var t=this;if(t.mounted)return!0;var a=m(e||t.params.el);if(!(e=a[0]))return!1;e.swiper=t;var i=function(){return"."+(t.params.wrapperClass||"").trim().split(" ").join(".")},s=function(){if(e&&e.shadowRoot&&e.shadowRoot.querySelector){var t=m(e.shadowRoot.querySelector(i()));return t.children=function(e){return a.children(e)},t}return a.children(i())}();if(0===s.length&&t.params.createElements){var n=r().createElement("div");s=m(n),n.className=t.params.wrapperClass,a.append(n),a.children("."+t.params.slideClass).each((function(e){s.append(e)}))}return S(t,{$el:a,el:e,$wrapperEl:s,wrapperEl:s[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===a.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===a.css("direction")),wrongRTL:"-webkit-box"===s.css("display")}),!0},n.init=function(e){var t=this;return t.initialized||!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t},n.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var a,i=this,s=i.params,r=i.$el,n=i.$wrapperEl,l=i.slides;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),r.removeAttr("style"),n.removeAttr("style"),l&&l.length&&l.removeClass([s.slideVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((function(e){i.off(e)})),!1!==e&&(i.$el[0].swiper=null,a=i,Object.keys(a).forEach((function(e){try{a[e]=null}catch(e){}try{delete a[e]}catch(e){}}))),i.destroyed=!0),null},t.extendDefaults=function(e){S(F,e)},t.installModule=function(e){t.prototype.modules||(t.prototype.modules={});var a=e.name||Object.keys(t.prototype.modules).length+"_"+x();t.prototype.modules[a]=e},t.use=function(e){return Array.isArray(e)?(e.forEach((function(e){return t.installModule(e)})),t):(t.installModule(e),t)},a=t,s=[{key:"extendedDefaults",get:function(){return F}},{key:"defaults",get:function(){return V}}],(i=null)&&e(a.prototype,i),s&&e(a,s),t}();Object.keys(W).forEach((function(e){Object.keys(W[e]).forEach((function(t){_.prototype[t]=W[e][t]}))})),_.use([I,A]);var q={update:function(e){var t=this,a=t.params,i=a.slidesPerView,s=a.slidesPerGroup,r=a.centeredSlides,n=t.params.virtual,l=n.addSlidesBefore,o=n.addSlidesAfter,d=t.virtual,p=d.from,u=d.to,c=d.slides,h=d.slidesGrid,v=d.renderSlide,f=d.offset;t.updateActiveIndex();var m,g,b,w=t.activeIndex||0;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",r?(g=Math.floor(i/2)+s+o,b=Math.floor(i/2)+s+l):(g=i+(s-1)+o,b=s+l);var y=Math.max((w||0)-b,0),E=Math.min((w||0)+g,c.length-1),x=(t.slidesGrid[y]||0)-(t.slidesGrid[0]||0);function T(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(S(t.virtual,{from:y,to:E,offset:x,slidesGrid:t.slidesGrid}),p===y&&u===E&&!e)return t.slidesGrid!==h&&x!==f&&t.slides.css(m,x+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:x,from:y,to:E,slides:function(){for(var e=[],t=y;t<=E;t+=1)e.push(c[t]);return e}()}),void(t.params.virtual.renderExternalUpdate&&T());var C=[],M=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(var z=p;z<=u;z+=1)(zE)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+z+'"]').remove();for(var P=0;P=y&&P<=E&&(void 0===u||e?M.push(P):(P>u&&M.push(P),P'+e+"

      ");return s.attr("data-swiper-slide-index")||s.attr("data-swiper-slide-index",t),i.cache&&(a.virtual.cache[t]=s),s},appendSlide:function(e){var t=this;if("object"==typeof e&&"length"in e)for(var a=0;a=0;i-=1)t.virtual.slides.splice(e[i],1),t.params.virtual.cache&&delete t.virtual.cache[e[i]],e[i]0&&0===t.$el.parents("."+t.params.slideActiveClass).length)return;var g=t.$el,b=g[0].clientWidth,w=g[0].clientHeight,y=a.innerWidth,E=a.innerHeight,x=t.$el.offset();s&&(x.left-=t.$el[0].scrollLeft);for(var T=[[x.left,x.top],[x.left+b,x.top],[x.left,x.top+w],[x.left+b,x.top+w]],C=0;C=0&&S[0]<=y&&S[1]>=0&&S[1]<=E){if(0===S[0]&&0===S[1])continue;m=!0}}if(!m)return}t.isHorizontal()?((p||u||c||h)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),((u||h)&&!s||(p||c)&&s)&&t.slideNext(),((p||c)&&!s||(u||h)&&s)&&t.slidePrev()):((p||u||v||f)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),(u||f)&&t.slideNext(),(p||v)&&t.slidePrev()),t.emit("keyPress",o)}}},enable:function(){var e=this,t=r();e.keyboard.enabled||(m(t).on("keydown",e.keyboard.handle),e.keyboard.enabled=!0)},disable:function(){var e=this,t=r();e.keyboard.enabled&&(m(t).off("keydown",e.keyboard.handle),e.keyboard.enabled=!1)}},K={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}},create:function(){M(this,{keyboard:t({enabled:!1},U)})},on:{init:function(e){e.params.keyboard.enabled&&e.keyboard.enable()},destroy:function(e){e.keyboard.enabled&&e.keyboard.disable()}}};var Z={lastScrollTime:x(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return l().navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var e=r(),t="onwheel",a=t in e;if(!a){var i=e.createElement("div");i.setAttribute(t,"return;"),a="function"==typeof i.onwheel}return!a&&e.implementation&&e.implementation.hasFeature&&!0!==e.implementation.hasFeature("","")&&(a=e.implementation.hasFeature("Events.wheel","3.0")),a}()?"wheel":"mousewheel"},normalize:function(e){var t=0,a=0,i=0,s=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),i=10*t,s=10*a,"deltaY"in e&&(s=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=s,s=0),(i||s)&&e.deltaMode&&(1===e.deltaMode?(i*=40,s*=40):(i*=800,s*=800)),i&&!t&&(t=i<1?-1:1),s&&!a&&(a=s<1?-1:1),{spinX:t,spinY:a,pixelX:i,pixelY:s}},handleMouseEnter:function(){this.enabled&&(this.mouseEntered=!0)},handleMouseLeave:function(){this.enabled&&(this.mouseEntered=!1)},handle:function(e){var t=e,a=this;if(a.enabled){var i=a.params.mousewheel;a.params.cssMode&&t.preventDefault();var s=a.$el;if("container"!==a.params.mousewheel.eventsTarget&&(s=m(a.params.mousewheel.eventsTarget)),!a.mouseEntered&&!s[0].contains(t.target)&&!i.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var r=0,n=a.rtlTranslate?-1:1,l=Z.normalize(t);if(i.forceToAxis)if(a.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;r=-l.pixelX*n}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;r=-l.pixelY}else r=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*n:-l.pixelY;if(0===r)return!0;i.invert&&(r=-r);var o=a.getTranslate()+r*i.sensitivity;if(o>=a.minTranslate()&&(o=a.minTranslate()),o<=a.maxTranslate()&&(o=a.maxTranslate()),(!!a.params.loop||!(o===a.minTranslate()||o===a.maxTranslate()))&&a.params.nested&&t.stopPropagation(),a.params.freeMode){var d={time:x(),delta:Math.abs(r),direction:Math.sign(r)},p=a.mousewheel.lastEventBeforeSnap,u=p&&d.time=a.minTranslate()&&(c=a.minTranslate()),c<=a.maxTranslate()&&(c=a.maxTranslate()),a.setTransition(0),a.setTranslate(c),a.updateProgress(),a.updateActiveIndex(),a.updateSlidesClasses(),(!h&&a.isBeginning||!v&&a.isEnd)&&a.updateSlidesClasses(),a.params.freeModeSticky){clearTimeout(a.mousewheel.timeout),a.mousewheel.timeout=void 0;var f=a.mousewheel.recentWheelEvents;f.length>=15&&f.shift();var g=f.length?f[f.length-1]:void 0,b=f[0];if(f.push(d),g&&(d.delta>g.delta||d.direction!==g.direction))f.splice(0);else if(f.length>=15&&d.time-b.time<500&&b.delta-d.delta>=1&&d.delta<=6){var w=r>0?.8:.2;a.mousewheel.lastEventBeforeSnap=d,f.splice(0),a.mousewheel.timeout=E((function(){a.slideToClosest(a.params.speed,!0,void 0,w)}),0)}a.mousewheel.timeout||(a.mousewheel.timeout=E((function(){a.mousewheel.lastEventBeforeSnap=d,f.splice(0),a.slideToClosest(a.params.speed,!0,void 0,.5)}),500))}if(u||a.emit("scroll",t),a.params.autoplay&&a.params.autoplayDisableOnInteraction&&a.autoplay.stop(),c===a.minTranslate()||c===a.maxTranslate())return!0}}else{var y={time:x(),delta:Math.abs(r),direction:Math.sign(r),raw:e},T=a.mousewheel.recentWheelEvents;T.length>=2&&T.shift();var C=T.length?T[T.length-1]:void 0;if(T.push(y),C?(y.direction!==C.direction||y.delta>C.delta||y.time>C.time+150)&&a.mousewheel.animateSlider(y):a.mousewheel.animateSlider(y),a.mousewheel.releaseScroll(y))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1}},animateSlider:function(e){var t=this,a=l();return!(this.params.mousewheel.thresholdDelta&&e.delta=6&&x()-t.mousewheel.lastScrollTime<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),t.emit("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),t.emit("scroll",e.raw)),t.mousewheel.lastScrollTime=(new a.Date).getTime(),!1)))},releaseScroll:function(e){var t=this,a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1},enable:function(){var e=this,t=Z.event();if(e.params.cssMode)return e.wrapperEl.removeEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(e.mousewheel.enabled)return!1;var a=e.$el;return"container"!==e.params.mousewheel.eventsTarget&&(a=m(e.params.mousewheel.eventsTarget)),a.on("mouseenter",e.mousewheel.handleMouseEnter),a.on("mouseleave",e.mousewheel.handleMouseLeave),a.on(t,e.mousewheel.handle),e.mousewheel.enabled=!0,!0},disable:function(){var e=this,t=Z.event();if(e.params.cssMode)return e.wrapperEl.addEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(!e.mousewheel.enabled)return!1;var a=e.$el;return"container"!==e.params.mousewheel.eventsTarget&&(a=m(e.params.mousewheel.eventsTarget)),a.off(t,e.mousewheel.handle),e.mousewheel.enabled=!1,!0}},J={toggleEl:function(e,t){e[t?"addClass":"removeClass"](this.params.navigation.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=t)},update:function(){var e=this,t=e.params.navigation,a=e.navigation.toggleEl;if(!e.params.loop){var i=e.navigation,s=i.$nextEl,r=i.$prevEl;r&&r.length>0&&(e.isBeginning?a(r,!0):a(r,!1),e.params.watchOverflow&&e.enabled&&r[e.isLocked?"addClass":"removeClass"](t.lockClass)),s&&s.length>0&&(e.isEnd?a(s,!0):a(s,!1),e.params.watchOverflow&&e.enabled&&s[e.isLocked?"addClass":"removeClass"](t.lockClass))}},onPrevClick:function(e){var t=this;e.preventDefault(),t.isBeginning&&!t.params.loop||t.slidePrev()},onNextClick:function(e){var t=this;e.preventDefault(),t.isEnd&&!t.params.loop||t.slideNext()},init:function(){var e,t,a=this,i=a.params.navigation;(a.params.navigation=P(a.$el,a.params.navigation,a.params.createElements,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),i.nextEl||i.prevEl)&&(i.nextEl&&(e=m(i.nextEl),a.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===a.$el.find(i.nextEl).length&&(e=a.$el.find(i.nextEl))),i.prevEl&&(t=m(i.prevEl),a.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===a.$el.find(i.prevEl).length&&(t=a.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",a.navigation.onNextClick),t&&t.length>0&&t.on("click",a.navigation.onPrevClick),S(a.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}),a.enabled||(e&&e.addClass(i.lockClass),t&&t.addClass(i.lockClass)))},destroy:function(){var e=this,t=e.navigation,a=t.$nextEl,i=t.$prevEl;a&&a.length&&(a.off("click",e.navigation.onNextClick),a.removeClass(e.params.navigation.disabledClass)),i&&i.length&&(i.off("click",e.navigation.onPrevClick),i.removeClass(e.params.navigation.disabledClass))}},Q={update:function(){var e=this,t=e.rtl,a=e.params.pagination;if(a.el&&e.pagination.el&&e.pagination.$el&&0!==e.pagination.$el.length){var i,s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,r=e.pagination.$el,n=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?((i=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup))>s-1-2*e.loopedSlides&&(i-=s-2*e.loopedSlides),i>n-1&&(i-=n),i<0&&"bullets"!==e.params.paginationType&&(i=n+i)):i=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===a.type&&e.pagination.bullets&&e.pagination.bullets.length>0){var l,o,d,p=e.pagination.bullets;if(a.dynamicBullets&&(e.pagination.bulletSize=p.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(e.isHorizontal()?"width":"height",e.pagination.bulletSize*(a.dynamicMainBullets+4)+"px"),a.dynamicMainBullets>1&&void 0!==e.previousIndex&&(e.pagination.dynamicBulletIndex+=i-e.previousIndex,e.pagination.dynamicBulletIndex>a.dynamicMainBullets-1?e.pagination.dynamicBulletIndex=a.dynamicMainBullets-1:e.pagination.dynamicBulletIndex<0&&(e.pagination.dynamicBulletIndex=0)),l=i-e.pagination.dynamicBulletIndex,d=((o=l+(Math.min(p.length,a.dynamicMainBullets)-1))+l)/2),p.removeClass(a.bulletActiveClass+" "+a.bulletActiveClass+"-next "+a.bulletActiveClass+"-next-next "+a.bulletActiveClass+"-prev "+a.bulletActiveClass+"-prev-prev "+a.bulletActiveClass+"-main"),r.length>1)p.each((function(e){var t=m(e),s=t.index();s===i&&t.addClass(a.bulletActiveClass),a.dynamicBullets&&(s>=l&&s<=o&&t.addClass(a.bulletActiveClass+"-main"),s===l&&t.prev().addClass(a.bulletActiveClass+"-prev").prev().addClass(a.bulletActiveClass+"-prev-prev"),s===o&&t.next().addClass(a.bulletActiveClass+"-next").next().addClass(a.bulletActiveClass+"-next-next"))}));else{var u=p.eq(i),c=u.index();if(u.addClass(a.bulletActiveClass),a.dynamicBullets){for(var h=p.eq(l),v=p.eq(o),f=l;f<=o;f+=1)p.eq(f).addClass(a.bulletActiveClass+"-main");if(e.params.loop)if(c>=p.length-a.dynamicMainBullets){for(var g=a.dynamicMainBullets;g>=0;g-=1)p.eq(p.length-g).addClass(a.bulletActiveClass+"-main");p.eq(p.length-a.dynamicMainBullets-1).addClass(a.bulletActiveClass+"-prev")}else h.prev().addClass(a.bulletActiveClass+"-prev").prev().addClass(a.bulletActiveClass+"-prev-prev"),v.next().addClass(a.bulletActiveClass+"-next").next().addClass(a.bulletActiveClass+"-next-next");else h.prev().addClass(a.bulletActiveClass+"-prev").prev().addClass(a.bulletActiveClass+"-prev-prev"),v.next().addClass(a.bulletActiveClass+"-next").next().addClass(a.bulletActiveClass+"-next-next")}}if(a.dynamicBullets){var b=Math.min(p.length,a.dynamicMainBullets+4),w=(e.pagination.bulletSize*b-e.pagination.bulletSize)/2-d*e.pagination.bulletSize,y=t?"right":"left";p.css(e.isHorizontal()?y:"top",w+"px")}}if("fraction"===a.type&&(r.find(z(a.currentClass)).text(a.formatFractionCurrent(i+1)),r.find(z(a.totalClass)).text(a.formatFractionTotal(n))),"progressbar"===a.type){var E;E=a.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";var x=(i+1)/n,T=1,C=1;"horizontal"===E?T=x:C=x,r.find(z(a.progressbarFillClass)).transform("translate3d(0,0,0) scaleX("+T+") scaleY("+C+")").transition(e.params.speed)}"custom"===a.type&&a.renderCustom?(r.html(a.renderCustom(e,i+1,n)),e.emit("paginationRender",r[0])):e.emit("paginationUpdate",r[0]),e.params.watchOverflow&&e.enabled&&r[e.isLocked?"addClass":"removeClass"](a.lockClass)}},render:function(){var e=this,t=e.params.pagination;if(t.el&&e.pagination.el&&e.pagination.$el&&0!==e.pagination.$el.length){var a=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,i=e.pagination.$el,s="";if("bullets"===t.type){var r=e.params.loop?Math.ceil((a-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&!e.params.loop&&r>a&&(r=a);for(var n=0;n";i.html(s),e.pagination.bullets=i.find(z(t.bulletClass))}"fraction"===t.type&&(s=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):' / ',i.html(s)),"progressbar"===t.type&&(s=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):'',i.html(s)),"custom"!==t.type&&e.emit("paginationRender",e.pagination.$el[0])}},init:function(){var e=this;e.params.pagination=P(e.$el,e.params.pagination,e.params.createElements,{el:"swiper-pagination"});var t=e.params.pagination;if(t.el){var a=m(t.el);0!==a.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&a.length>1&&(a=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&a.addClass(t.clickableClass),a.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(a.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&a.addClass(t.progressbarOppositeClass),t.clickable&&a.on("click",z(t.bulletClass),(function(t){t.preventDefault();var a=m(this).index()*e.params.slidesPerGroup;e.params.loop&&(a+=e.loopedSlides),e.slideTo(a)})),S(e.pagination,{$el:a,el:a[0]}),e.enabled||a.addClass(t.lockClass))}},destroy:function(){var e=this,t=e.params.pagination;if(t.el&&e.pagination.el&&e.pagination.$el&&0!==e.pagination.$el.length){var a=e.pagination.$el;a.removeClass(t.hiddenClass),a.removeClass(t.modifierClass+t.type),e.pagination.bullets&&e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&&a.off("click",z(t.bulletClass))}}},ee={setTranslate:function(){var e=this;if(e.params.scrollbar.el&&e.scrollbar.el){var t=e.scrollbar,a=e.rtlTranslate,i=e.progress,s=t.dragSize,r=t.trackSize,n=t.$dragEl,l=t.$el,o=e.params.scrollbar,d=s,p=(r-s)*i;a?(p=-p)>0?(d=s-p,p=0):-p+s>r&&(d=r+p):p<0?(d=s+p,p=0):p+s>r&&(d=r-p),e.isHorizontal()?(n.transform("translate3d("+p+"px, 0, 0)"),n[0].style.width=d+"px"):(n.transform("translate3d(0px, "+p+"px, 0)"),n[0].style.height=d+"px"),o.hide&&(clearTimeout(e.scrollbar.timeout),l[0].style.opacity=1,e.scrollbar.timeout=setTimeout((function(){l[0].style.opacity=0,l.transition(400)}),1e3))}},setTransition:function(e){var t=this;t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)},updateSize:function(){var e=this;if(e.params.scrollbar.el&&e.scrollbar.el){var t=e.scrollbar,a=t.$dragEl,i=t.$el;a[0].style.width="",a[0].style.height="";var s,r=e.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,n=e.size/e.virtualSize,l=n*(r/e.size);s="auto"===e.params.scrollbar.dragSize?r*n:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?a[0].style.width=s+"px":a[0].style.height=s+"px",i[0].style.display=n>=1?"none":"",e.params.scrollbar.hide&&(i[0].style.opacity=0),S(t,{trackSize:r,divider:n,moveDivider:l,dragSize:s}),e.params.watchOverflow&&e.enabled&&t.$el[e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)}},getPointerPosition:function(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition:function(e){var t,a=this,i=a.scrollbar,s=a.rtlTranslate,r=i.$el,n=i.dragSize,l=i.trackSize,o=i.dragStartPos;t=(i.getPointerPosition(e)-r.offset()[a.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(l-n),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var d=a.minTranslate()+(a.maxTranslate()-a.minTranslate())*t;a.updateProgress(d),a.setTranslate(d),a.updateActiveIndex(),a.updateSlidesClasses()},onDragStart:function(e){var t=this,a=t.params.scrollbar,i=t.scrollbar,s=t.$wrapperEl,r=i.$el,n=i.$dragEl;t.scrollbar.isTouched=!0,t.scrollbar.dragStartPos=e.target===n[0]||e.target===n?i.getPointerPosition(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),n.transition(100),i.setDragPosition(e),clearTimeout(t.scrollbar.dragTimeout),r.transition(0),a.hide&&r.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),t.emit("scrollbarDragStart",e)},onDragMove:function(e){var t=this,a=t.scrollbar,i=t.$wrapperEl,s=a.$el,r=a.$dragEl;t.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,a.setDragPosition(e),i.transition(0),s.transition(0),r.transition(0),t.emit("scrollbarDragMove",e))},onDragEnd:function(e){var t=this,a=t.params.scrollbar,i=t.scrollbar,s=t.$wrapperEl,r=i.$el;t.scrollbar.isTouched&&(t.scrollbar.isTouched=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),s.transition("")),a.hide&&(clearTimeout(t.scrollbar.dragTimeout),t.scrollbar.dragTimeout=E((function(){r.css("opacity",0),r.transition(400)}),1e3)),t.emit("scrollbarDragEnd",e),a.snapOnRelease&&t.slideToClosest())},enableDraggable:function(){var e=this;if(e.params.scrollbar.el){var t=r(),a=e.scrollbar,i=e.touchEventsTouch,s=e.touchEventsDesktop,n=e.params,l=e.support,o=a.$el[0],d=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};o&&(l.touch?(o.addEventListener(i.start,e.scrollbar.onDragStart,d),o.addEventListener(i.move,e.scrollbar.onDragMove,d),o.addEventListener(i.end,e.scrollbar.onDragEnd,p)):(o.addEventListener(s.start,e.scrollbar.onDragStart,d),t.addEventListener(s.move,e.scrollbar.onDragMove,d),t.addEventListener(s.end,e.scrollbar.onDragEnd,p)))}},disableDraggable:function(){var e=this;if(e.params.scrollbar.el){var t=r(),a=e.scrollbar,i=e.touchEventsTouch,s=e.touchEventsDesktop,n=e.params,l=e.support,o=a.$el[0],d=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};o&&(l.touch?(o.removeEventListener(i.start,e.scrollbar.onDragStart,d),o.removeEventListener(i.move,e.scrollbar.onDragMove,d),o.removeEventListener(i.end,e.scrollbar.onDragEnd,p)):(o.removeEventListener(s.start,e.scrollbar.onDragStart,d),t.removeEventListener(s.move,e.scrollbar.onDragMove,d),t.removeEventListener(s.end,e.scrollbar.onDragEnd,p)))}},init:function(){var e=this,t=e.scrollbar,a=e.$el;e.params.scrollbar=P(a,e.params.scrollbar,e.params.createElements,{el:"swiper-scrollbar"});var i=e.params.scrollbar;if(i.el){var s=m(i.el);e.params.uniqueNavElements&&"string"==typeof i.el&&s.length>1&&1===a.find(i.el).length&&(s=a.find(i.el));var r=s.find("."+e.params.scrollbar.dragClass);0===r.length&&(r=m('
      '),s.append(r)),S(t,{$el:s,el:s[0],$dragEl:r,dragEl:r[0]}),i.draggable&&t.enableDraggable(),s&&s[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)}},destroy:function(){this.scrollbar.disableDraggable()}},te={setTransform:function(e,t){var a=this.rtl,i=m(e),s=a?-1:1,r=i.attr("data-swiper-parallax")||"0",n=i.attr("data-swiper-parallax-x"),l=i.attr("data-swiper-parallax-y"),o=i.attr("data-swiper-parallax-scale"),d=i.attr("data-swiper-parallax-opacity");if(n||l?(n=n||"0",l=l||"0"):this.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*t*s+"%":n*t*s+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=d){var p=d-(d-1)*(1-Math.abs(t));i[0].style.opacity=p}if(null==o)i.transform("translate3d("+n+", "+l+", 0px)");else{var u=o-(o-1)*(1-Math.abs(t));i.transform("translate3d("+n+", "+l+", 0px) scale("+u+")")}},setTranslate:function(){var e=this,t=e.$el,a=e.slides,i=e.progress,s=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,i)})),a.each((function(t,a){var r=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(r+=Math.ceil(a/2)-i*(s.length-1)),r=Math.min(Math.max(r,-1),1),m(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){e.parallax.setTransform(t,r)}))}))},setTransition:function(e){void 0===e&&(e=this.params.speed);this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t){var a=m(t),i=parseInt(a.attr("data-swiper-parallax-duration"),10)||e;0===e&&(i=0),a.transition(i)}))}},ae={getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var t=e.targetTouches[0].pageX,a=e.targetTouches[0].pageY,i=e.targetTouches[1].pageX,s=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(i-t,2)+Math.pow(s-a,2))},onGestureStart:function(e){var t=this,a=t.support,i=t.params.zoom,s=t.zoom,r=s.gesture;if(s.fakeGestureTouched=!1,s.fakeGestureMoved=!1,!a.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;s.fakeGestureTouched=!0,r.scaleStart=ae.getDistanceBetweenTouches(e)}r.$slideEl&&r.$slideEl.length||(r.$slideEl=m(e.target).closest("."+t.params.slideClass),0===r.$slideEl.length&&(r.$slideEl=t.slides.eq(t.activeIndex)),r.$imageEl=r.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),r.$imageWrapEl=r.$imageEl.parent("."+i.containerClass),r.maxRatio=r.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,0!==r.$imageWrapEl.length)?(r.$imageEl&&r.$imageEl.transition(0),t.zoom.isScaling=!0):r.$imageEl=void 0},onGestureChange:function(e){var t=this,a=t.support,i=t.params.zoom,s=t.zoom,r=s.gesture;if(!a.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;s.fakeGestureMoved=!0,r.scaleMove=ae.getDistanceBetweenTouches(e)}r.$imageEl&&0!==r.$imageEl.length?(a.gestures?s.scale=e.scale*s.currentScale:s.scale=r.scaleMove/r.scaleStart*s.currentScale,s.scale>r.maxRatio&&(s.scale=r.maxRatio-1+Math.pow(s.scale-r.maxRatio+1,.5)),s.scales.touchesStart.x))return void(s.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(s.minY)===Math.floor(s.startY)&&s.touchesCurrent.ys.touchesStart.y))return void(s.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),s.isMoved=!0,s.currentX=s.touchesCurrent.x-s.touchesStart.x+s.startX,s.currentY=s.touchesCurrent.y-s.touchesStart.y+s.startY,s.currentXs.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentYs.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.8)),r.prevPositionX||(r.prevPositionX=s.touchesCurrent.x),r.prevPositionY||(r.prevPositionY=s.touchesCurrent.y),r.prevTime||(r.prevTime=Date.now()),r.x=(s.touchesCurrent.x-r.prevPositionX)/(Date.now()-r.prevTime)/2,r.y=(s.touchesCurrent.y-r.prevPositionY)/(Date.now()-r.prevTime)/2,Math.abs(s.touchesCurrent.x-r.prevPositionX)<2&&(r.x=0),Math.abs(s.touchesCurrent.y-r.prevPositionY)<2&&(r.y=0),r.prevPositionX=s.touchesCurrent.x,r.prevPositionY=s.touchesCurrent.y,r.prevTime=Date.now(),i.$imageWrapEl.transform("translate3d("+s.currentX+"px, "+s.currentY+"px,0)")}}},onTouchEnd:function(){var e=this.zoom,t=e.gesture,a=e.image,i=e.velocity;if(t.$imageEl&&0!==t.$imageEl.length){if(!a.isTouched||!a.isMoved)return a.isTouched=!1,void(a.isMoved=!1);a.isTouched=!1,a.isMoved=!1;var s=300,r=300,n=i.x*s,l=a.currentX+n,o=i.y*r,d=a.currentY+o;0!==i.x&&(s=Math.abs((l-a.currentX)/i.x)),0!==i.y&&(r=Math.abs((d-a.currentY)/i.y));var p=Math.max(s,r);a.currentX=l,a.currentY=d;var u=a.width*e.scale,c=a.height*e.scale;a.minX=Math.min(t.slideWidth/2-u/2,0),a.maxX=-a.minX,a.minY=Math.min(t.slideHeight/2-c/2,0),a.maxY=-a.minY,a.currentX=Math.max(Math.min(a.currentX,a.maxX),a.minX),a.currentY=Math.max(Math.min(a.currentY,a.maxY),a.minY),t.$imageWrapEl.transition(p).transform("translate3d("+a.currentX+"px, "+a.currentY+"px,0)")}},onTransitionEnd:function(){var e=this,t=e.zoom,a=t.gesture;a.$slideEl&&e.previousIndex!==e.activeIndex&&(a.$imageEl&&a.$imageEl.transform("translate3d(0,0,0) scale(1)"),a.$imageWrapEl&&a.$imageWrapEl.transform("translate3d(0,0,0)"),t.scale=1,t.currentScale=1,a.$slideEl=void 0,a.$imageEl=void 0,a.$imageWrapEl=void 0)},toggle:function(e){var t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in:function(e){var t,a,i,s,r,n,o,d,p,u,c,h,v,f,g,b,w=this,y=l(),E=w.zoom,x=w.params.zoom,T=E.gesture,C=E.image;(T.$slideEl||(e&&e.target&&(T.$slideEl=m(e.target).closest("."+w.params.slideClass)),T.$slideEl||(w.params.virtual&&w.params.virtual.enabled&&w.virtual?T.$slideEl=w.$wrapperEl.children("."+w.params.slideActiveClass):T.$slideEl=w.slides.eq(w.activeIndex)),T.$imageEl=T.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),T.$imageWrapEl=T.$imageEl.parent("."+x.containerClass)),T.$imageEl&&0!==T.$imageEl.length&&T.$imageWrapEl&&0!==T.$imageWrapEl.length)&&(T.$slideEl.addClass(""+x.zoomedSlideClass),void 0===C.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,a="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=C.touchesStart.x,a=C.touchesStart.y),E.scale=T.$imageWrapEl.attr("data-swiper-zoom")||x.maxRatio,E.currentScale=T.$imageWrapEl.attr("data-swiper-zoom")||x.maxRatio,e?(g=T.$slideEl[0].offsetWidth,b=T.$slideEl[0].offsetHeight,i=T.$slideEl.offset().left+y.scrollX+g/2-t,s=T.$slideEl.offset().top+y.scrollY+b/2-a,o=T.$imageEl[0].offsetWidth,d=T.$imageEl[0].offsetHeight,p=o*E.scale,u=d*E.scale,v=-(c=Math.min(g/2-p/2,0)),f=-(h=Math.min(b/2-u/2,0)),(r=i*E.scale)v&&(r=v),(n=s*E.scale)f&&(n=f)):(r=0,n=0),T.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),T.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+E.scale+")"))},out:function(){var e=this,t=e.zoom,a=e.params.zoom,i=t.gesture;i.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?i.$slideEl=e.$wrapperEl.children("."+e.params.slideActiveClass):i.$slideEl=e.slides.eq(e.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+a.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&i.$imageWrapEl&&0!==i.$imageWrapEl.length&&(t.scale=1,t.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+a.zoomedSlideClass),i.$slideEl=void 0)},toggleGestures:function(e){var t=this,a=t.zoom,i=a.slideSelector,s=a.passiveListener;t.$wrapperEl[e]("gesturestart",i,a.onGestureStart,s),t.$wrapperEl[e]("gesturechange",i,a.onGestureChange,s),t.$wrapperEl[e]("gestureend",i,a.onGestureEnd,s)},enableGestures:function(){this.zoom.gesturesEnabled||(this.zoom.gesturesEnabled=!0,this.zoom.toggleGestures("on"))},disableGestures:function(){this.zoom.gesturesEnabled&&(this.zoom.gesturesEnabled=!1,this.zoom.toggleGestures("off"))},enable:function(){var e=this,t=e.support,a=e.zoom;if(!a.enabled){a.enabled=!0;var i=!("touchstart"!==e.touchEvents.start||!t.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},s=!t.passiveListener||{passive:!1,capture:!0},r="."+e.params.slideClass;e.zoom.passiveListener=i,e.zoom.slideSelector=r,t.gestures?(e.$wrapperEl.on(e.touchEvents.start,e.zoom.enableGestures,i),e.$wrapperEl.on(e.touchEvents.end,e.zoom.disableGestures,i)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,r,a.onGestureStart,i),e.$wrapperEl.on(e.touchEvents.move,r,a.onGestureChange,s),e.$wrapperEl.on(e.touchEvents.end,r,a.onGestureEnd,i),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,r,a.onGestureEnd,i)),e.$wrapperEl.on(e.touchEvents.move,"."+e.params.zoom.containerClass,a.onTouchMove,s)}},disable:function(){var e=this,t=e.zoom;if(t.enabled){var a=e.support;e.zoom.enabled=!1;var i=!("touchstart"!==e.touchEvents.start||!a.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},s=!a.passiveListener||{passive:!1,capture:!0},r="."+e.params.slideClass;a.gestures?(e.$wrapperEl.off(e.touchEvents.start,e.zoom.enableGestures,i),e.$wrapperEl.off(e.touchEvents.end,e.zoom.disableGestures,i)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,r,t.onGestureStart,i),e.$wrapperEl.off(e.touchEvents.move,r,t.onGestureChange,s),e.$wrapperEl.off(e.touchEvents.end,r,t.onGestureEnd,i),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,r,t.onGestureEnd,i)),e.$wrapperEl.off(e.touchEvents.move,"."+e.params.zoom.containerClass,t.onTouchMove,s)}}},ie={loadInSlide:function(e,t){void 0===t&&(t=!0);var a=this,i=a.params.lazy;if(void 0!==e&&0!==a.slides.length){var s=a.virtual&&a.params.virtual.enabled?a.$wrapperEl.children("."+a.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):a.slides.eq(e),r=s.find("."+i.elementClass+":not(."+i.loadedClass+"):not(."+i.loadingClass+")");!s.hasClass(i.elementClass)||s.hasClass(i.loadedClass)||s.hasClass(i.loadingClass)||r.push(s[0]),0!==r.length&&r.each((function(e){var r=m(e);r.addClass(i.loadingClass);var n=r.attr("data-background"),l=r.attr("data-src"),o=r.attr("data-srcset"),d=r.attr("data-sizes"),p=r.parent("picture");a.loadImage(r[0],l||n,o,d,!1,(function(){if(null!=a&&a&&(!a||a.params)&&!a.destroyed){if(n?(r.css("background-image",'url("'+n+'")'),r.removeAttr("data-background")):(o&&(r.attr("srcset",o),r.removeAttr("data-srcset")),d&&(r.attr("sizes",d),r.removeAttr("data-sizes")),p.length&&p.children("source").each((function(e){var t=m(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),l&&(r.attr("src",l),r.removeAttr("data-src"))),r.addClass(i.loadedClass).removeClass(i.loadingClass),s.find("."+i.preloaderClass).remove(),a.params.loop&&t){var e=s.attr("data-swiper-slide-index");if(s.hasClass(a.params.slideDuplicateClass)){var u=a.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+a.params.slideDuplicateClass+")");a.lazy.loadInSlide(u.index(),!1)}else{var c=a.$wrapperEl.children("."+a.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');a.lazy.loadInSlide(c.index(),!1)}}a.emit("lazyImageReady",s[0],r[0]),a.params.autoHeight&&a.updateAutoHeight()}})),a.emit("lazyImageLoad",s[0],r[0])}))}},load:function(){var e=this,t=e.$wrapperEl,a=e.params,i=e.slides,s=e.activeIndex,r=e.virtual&&a.virtual.enabled,n=a.lazy,l=a.slidesPerView;function o(e){if(r){if(t.children("."+a.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(i[e])return!0;return!1}function d(e){return r?m(e).attr("data-swiper-slide-index"):m(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+a.slideVisibleClass).each((function(t){var a=r?m(t).attr("data-swiper-slide-index"):m(t).index();e.lazy.loadInSlide(a)}));else if(l>1)for(var p=s;p1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){for(var u=n.loadPrevNextAmount,c=l,h=Math.min(s+c+Math.max(u,c),i.length),v=Math.max(s-Math.max(c,u),0),f=s+l;f0&&e.lazy.loadInSlide(d(b));var w=t.children("."+a.slidePrevClass);w.length>0&&e.lazy.loadInSlide(d(w))}},checkInViewOnLoad:function(){var e=l(),t=this;if(t&&!t.destroyed){var a=t.params.lazy.scrollingElement?m(t.params.lazy.scrollingElement):m(e),i=a[0]===e,s=i?e.innerWidth:a[0].offsetWidth,r=i?e.innerHeight:a[0].offsetHeight,n=t.$el.offset(),o=!1;t.rtlTranslate&&(n.left-=t.$el[0].scrollLeft);for(var d=[[n.left,n.top],[n.left+t.width,n.top],[n.left,n.top+t.height],[n.left+t.width,n.top+t.height]],p=0;p=0&&u[0]<=s&&u[1]>=0&&u[1]<=r){if(0===u[0]&&0===u[1])continue;o=!0}}var c=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};o?(t.lazy.load(),a.off("scroll",t.lazy.checkInViewOnLoad,c)):t.lazy.scrollHandlerAttached||(t.lazy.scrollHandlerAttached=!0,a.on("scroll",t.lazy.checkInViewOnLoad,c))}}},se={LinearSpline:function(e,t){var a,i,s,r,n,l=function(e,t){for(i=-1,a=e.length;a-i>1;)e[s=a+i>>1]<=t?i=s:a=s;return a};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=l(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){var t=this;t.controller.spline||(t.controller.spline=t.params.loop?new se.LinearSpline(t.slidesGrid,e.slidesGrid):new se.LinearSpline(t.snapGrid,e.snapGrid))},setTranslate:function(e,t){var a,i,s=this,r=s.controller.control,n=s.constructor;function l(e){var t=s.rtlTranslate?-s.translate:s.translate;"slide"===s.params.controller.by&&(s.controller.getInterpolateFunction(e),i=-s.controller.spline.interpolate(-t)),i&&"container"!==s.params.controller.by||(a=(e.maxTranslate()-e.minTranslate())/(s.maxTranslate()-s.minTranslate()),i=(t-s.minTranslate())*a+e.minTranslate()),s.params.controller.inverse&&(i=e.maxTranslate()-i),e.updateProgress(i),e.setTranslate(i,s),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(r))for(var o=0;o0&&(e.isBeginning?(e.a11y.disableEl(i),e.a11y.makeElNotFocusable(i)):(e.a11y.enableEl(i),e.a11y.makeElFocusable(i))),a&&a.length>0&&(e.isEnd?(e.a11y.disableEl(a),e.a11y.makeElNotFocusable(a)):(e.a11y.enableEl(a),e.a11y.makeElFocusable(a)))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(a){var i=m(a);e.a11y.makeElFocusable(i),e.params.pagination.renderBullet||(e.a11y.addElRole(i,"button"),e.a11y.addElLabel(i,t.paginationBulletMessage.replace(/\{\{index\}\}/,i.index()+1)))}))},init:function(){var e=this,t=e.params.a11y;e.$el.append(e.a11y.liveRegion);var a=e.$el;t.containerRoleDescriptionMessage&&e.a11y.addElRoleDescription(a,t.containerRoleDescriptionMessage),t.containerMessage&&e.a11y.addElLabel(a,t.containerMessage);var i,s,r=e.$wrapperEl,n=r.attr("id")||"swiper-wrapper-"+e.a11y.getRandomNumber(16),l=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";e.a11y.addElId(r,n),e.a11y.addElLive(r,l),t.itemRoleDescriptionMessage&&e.a11y.addElRoleDescription(m(e.slides),t.itemRoleDescriptionMessage),e.a11y.addElRole(m(e.slides),t.slideRole),e.slides.each((function(a){var i=m(a),s=t.slideLabelMessage.replace(/\{\{index\}\}/,i.index()+1).replace(/\{\{slidesLength\}\}/,e.slides.length);e.a11y.addElLabel(i,s)})),e.navigation&&e.navigation.$nextEl&&(i=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),i&&i.length&&(e.a11y.makeElFocusable(i),"BUTTON"!==i[0].tagName&&(e.a11y.addElRole(i,"button"),i.on("keydown",e.a11y.onEnterOrSpaceKey)),e.a11y.addElLabel(i,t.nextSlideMessage),e.a11y.addElControls(i,n)),s&&s.length&&(e.a11y.makeElFocusable(s),"BUTTON"!==s[0].tagName&&(e.a11y.addElRole(s,"button"),s.on("keydown",e.a11y.onEnterOrSpaceKey)),e.a11y.addElLabel(s,t.prevSlideMessage),e.a11y.addElControls(s,n)),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.on("keydown",z(e.params.pagination.bulletClass),e.a11y.onEnterOrSpaceKey)},destroy:function(){var e,t,a=this;a.a11y.liveRegion&&a.a11y.liveRegion.length>0&&a.a11y.liveRegion.remove(),a.navigation&&a.navigation.$nextEl&&(e=a.navigation.$nextEl),a.navigation&&a.navigation.$prevEl&&(t=a.navigation.$prevEl),e&&e.off("keydown",a.a11y.onEnterOrSpaceKey),t&&t.off("keydown",a.a11y.onEnterOrSpaceKey),a.pagination&&a.params.pagination.clickable&&a.pagination.bullets&&a.pagination.bullets.length&&a.pagination.$el.off("keydown",z(a.params.pagination.bulletClass),a.a11y.onEnterOrSpaceKey)}},ne={init:function(){var e=this,t=l();if(e.params.history){if(!t.history||!t.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);var a=e.history;a.initialized=!0,a.paths=ne.getPathValues(e.params.url),(a.paths.key||a.paths.value)&&(a.scrollToSlide(0,a.paths.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",e.history.setHistoryPopState))}},destroy:function(){var e=l();this.params.history.replaceState||e.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){var e=this;e.history.paths=ne.getPathValues(e.params.url),e.history.scrollToSlide(e.params.speed,e.history.paths.value,!1)},getPathValues:function(e){var t=l(),a=(e?new URL(e):t.location).pathname.slice(1).split("/").filter((function(e){return""!==e})),i=a.length;return{key:a[i-2],value:a[i-1]}},setHistory:function(e,t){var a=this,i=l();if(a.history.initialized&&a.params.history.enabled){var s;s=a.params.url?new URL(a.params.url):i.location;var r=a.slides.eq(t),n=ne.slugify(r.attr("data-history"));if(a.params.history.root.length>0){var o=a.params.history.root;"/"===o[o.length-1]&&(o=o.slice(0,o.length-1)),n=o+"/"+e+"/"+n}else s.pathname.includes(e)||(n=e+"/"+n);var d=i.history.state;d&&d.value===n||(a.params.history.replaceState?i.history.replaceState({value:n},null,n):i.history.pushState({value:n},null,n))}},slugify:function(e){return e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,t,a){var i=this;if(t)for(var s=0,r=i.slides.length;s
      '),i.append(e)),e.css({height:r+"px"})):0===(e=a.find(".swiper-cube-shadow")).length&&(e=m('
      '),a.append(e)));for(var v=0;v-1&&(h=90*g+90*y,l&&(h=90*-g-90*y)),f.transform(C),p.slideShadows){var S=u?f.find(".swiper-slide-shadow-left"):f.find(".swiper-slide-shadow-top"),M=u?f.find(".swiper-slide-shadow-right"):f.find(".swiper-slide-shadow-bottom");0===S.length&&(S=m('
      '),f.append(S)),0===M.length&&(M=m('
      '),f.append(M)),S.length&&(S[0].style.opacity=Math.max(-y,0)),M.length&&(M[0].style.opacity=Math.max(y,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+o/2+"px","-moz-transform-origin":"50% 50% -"+o/2+"px","-ms-transform-origin":"50% 50% -"+o/2+"px","transform-origin":"50% 50% -"+o/2+"px"}),p.shadow)if(u)e.transform("translate3d(0px, "+(r/2+p.shadowOffset)+"px, "+-r/2+"px) rotateX(90deg) rotateZ(0deg) scale("+p.shadowScale+")");else{var z=Math.abs(h)-90*Math.floor(Math.abs(h)/90),P=1.5-(Math.sin(2*z*Math.PI/360)/2+Math.cos(2*z*Math.PI/360)/2),k=p.shadowScale,$=p.shadowScale/P,L=p.shadowOffset;e.transform("scale3d("+k+", 1, "+$+") translate3d(0px, "+(n/2+L)+"px, "+-n/2/$+"px) rotateX(-90deg)")}var I=d.isSafari||d.isWebView?-o/2:0;i.transform("translate3d(0px,0,"+I+"px) rotateX("+(t.isHorizontal()?0:h)+"deg) rotateY("+(t.isHorizontal()?-h:0)+"deg)")},setTransition:function(e){var t=this,a=t.$el;t.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&a.find(".swiper-cube-shadow").transition(e)}},ue={setTranslate:function(){for(var e=this,t=e.slides,a=e.rtlTranslate,i=0;i
      '),s.append(p)),0===u.length&&(u=m('
      '),s.append(u)),p.length&&(p[0].style.opacity=Math.max(-r,0)),u.length&&(u[0].style.opacity=Math.max(r,0))}s.transform("translate3d("+o+"px, "+d+"px, 0px) rotateX("+l+"deg) rotateY("+n+"deg)")}},setTransition:function(e){var t=this,a=t.slides,i=t.activeIndex,s=t.$wrapperEl;if(a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;a.eq(i).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],a=0;a'),h.append(S)),0===M.length&&(M=m('
      '),h.append(M)),S.length&&(S[0].style.opacity=f>0?f:0),M.length&&(M[0].style.opacity=-f>0?-f:0)}}},setTransition:function(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}},he={init:function(){var e=this,t=e.params.thumbs;if(e.thumbs.initialized)return!1;e.thumbs.initialized=!0;var a=e.constructor;return t.swiper instanceof a?(e.thumbs.swiper=t.swiper,S(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),S(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):C(t.swiper)&&(e.thumbs.swiper=new a(S({},t.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),e.thumbs.swiperCreated=!0),e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",e.thumbs.onThumbClick),!0},onThumbClick:function(){var e=this,t=e.thumbs.swiper;if(t){var a=t.clickedIndex,i=t.clickedSlide;if(!(i&&m(i).hasClass(e.params.thumbs.slideThumbActiveClass)||null==a)){var s;if(s=t.params.loop?parseInt(m(t.clickedSlide).attr("data-swiper-slide-index"),10):a,e.params.loop){var r=e.activeIndex;e.slides.eq(r).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,r=e.activeIndex);var n=e.slides.eq(r).prevAll('[data-swiper-slide-index="'+s+'"]').eq(0).index(),l=e.slides.eq(r).nextAll('[data-swiper-slide-index="'+s+'"]').eq(0).index();s=void 0===n?l:void 0===l?n:l-r1?p:o:p-ot.previousIndex?"next":"prev"}else l=(n=t.realIndex)>t.previousIndex?"next":"prev";r&&(n+="next"===l?s:-1*s),a.visibleSlidesIndexes&&a.visibleSlidesIndexes.indexOf(n)<0&&(a.params.centeredSlides?n=n>o?n-Math.floor(i/2)+1:n+Math.floor(i/2)-1:n>o&&a.params.slidesPerGroup,a.slideTo(n,e?0:void 0))}var u=1,c=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(u=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(u=1),u=Math.floor(u),a.slides.removeClass(c),a.params.loop||a.params.virtual&&a.params.virtual.enabled)for(var h=0;h0&&!m(a).hasClass(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&a===e.navigation.nextEl||e.navigation.prevEl&&a===e.navigation.prevEl))return;!0===e.pagination.$el.hasClass(e.params.pagination.hiddenClass)?e.emit("paginationShow"):e.emit("paginationHide"),e.pagination.$el.toggleClass(e.params.pagination.hiddenClass)}}}},{name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create:function(){M(this,{scrollbar:t({isTouched:!1,timeout:null,dragTimeout:null},ee)})},on:{init:function(e){e.scrollbar.init(),e.scrollbar.updateSize(),e.scrollbar.setTranslate()},update:function(e){e.scrollbar.updateSize()},resize:function(e){e.scrollbar.updateSize()},observerUpdate:function(e){e.scrollbar.updateSize()},setTranslate:function(e){e.scrollbar.setTranslate()},setTransition:function(e,t){e.scrollbar.setTransition(t)},"enable disable":function(e){var t=e.scrollbar.$el;t&&t[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)},destroy:function(e){e.scrollbar.destroy()}}},{name:"parallax",params:{parallax:{enabled:!1}},create:function(){M(this,{parallax:t({},te)})},on:{beforeInit:function(e){e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},init:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTranslate:function(e){e.params.parallax.enabled&&e.parallax.setTranslate()},setTransition:function(e,t){e.params.parallax.enabled&&e.parallax.setTransition(t)}}},{name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create:function(){var e=this;M(e,{zoom:t({enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}},ae)});var a=1;Object.defineProperty(e.zoom,"scale",{get:function(){return a},set:function(t){if(a!==t){var i=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,s=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,i,s)}a=t}})},on:{init:function(e){e.params.zoom.enabled&&e.zoom.enable()},destroy:function(e){e.zoom.disable()},touchStart:function(e,t){e.zoom.enabled&&e.zoom.onTouchStart(t)},touchEnd:function(e,t){e.zoom.enabled&&e.zoom.onTouchEnd(t)},doubleTap:function(e,t){!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&e.zoom.toggle(t)},transitionEnd:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.zoom.onTransitionEnd()},slideChange:function(e){e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&e.zoom.onTransitionEnd()}}},{name:"lazy",params:{lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create:function(){M(this,{lazy:t({initialImageLoaded:!1},ie)})},on:{beforeInit:function(e){e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)},init:function(e){e.params.lazy.enabled&&!e.params.loop&&0===e.params.initialSlide&&(e.params.lazy.checkInView?e.lazy.checkInViewOnLoad():e.lazy.load())},scroll:function(e){e.params.freeMode&&!e.params.freeModeSticky&&e.lazy.load()},"scrollbarDragMove resize _freeModeNoMomentumRelease":function(e){e.params.lazy.enabled&&e.lazy.load()},transitionStart:function(e){e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!e.lazy.initialImageLoaded)&&e.lazy.load()},transitionEnd:function(e){e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&e.lazy.load()},slideChange:function(e){var t=e.params,a=t.lazy,i=t.cssMode,s=t.watchSlidesVisibility,r=t.watchSlidesProgress,n=t.touchReleaseOnEdges,l=t.resistanceRatio;a.enabled&&(i||(s||r)&&(n||0===l))&&e.lazy.load()}}},{name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create:function(){M(this,{controller:t({control:this.params.controller.control},se)})},on:{update:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},resize:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},observerUpdate:function(e){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},setTranslate:function(e,t,a){e.controller.control&&e.controller.setTranslate(t,a)},setTransition:function(e,t,a){e.controller.control&&e.controller.setTransition(t,a)}}},{name:"a11y",params:{a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group"}},create:function(){M(this,{a11y:t({},re,{liveRegion:m('')})})},on:{afterInit:function(e){e.params.a11y.enabled&&(e.a11y.init(),e.a11y.updateNavigation())},toEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},fromEdge:function(e){e.params.a11y.enabled&&e.a11y.updateNavigation()},paginationUpdate:function(e){e.params.a11y.enabled&&e.a11y.updatePagination()},destroy:function(e){e.params.a11y.enabled&&e.a11y.destroy()}}},{name:"history",params:{history:{enabled:!1,root:"",replaceState:!1,key:"slides"}},create:function(){M(this,{history:t({},ne)})},on:{init:function(e){e.params.history.enabled&&e.history.init()},destroy:function(e){e.params.history.enabled&&e.history.destroy()},"transitionEnd _freeModeNoMomentumRelease":function(e){e.history.initialized&&e.history.setHistory(e.params.history.key,e.activeIndex)},slideChange:function(e){e.history.initialized&&e.params.cssMode&&e.history.setHistory(e.params.history.key,e.activeIndex)}}},{name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create:function(){M(this,{hashNavigation:t({initialized:!1},le)})},on:{init:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.init()},destroy:function(e){e.params.hashNavigation.enabled&&e.hashNavigation.destroy()},"transitionEnd _freeModeNoMomentumRelease":function(e){e.hashNavigation.initialized&&e.hashNavigation.setHash()},slideChange:function(e){e.hashNavigation.initialized&&e.params.cssMode&&e.hashNavigation.setHash()}}},{name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}},create:function(){M(this,{autoplay:t({},oe,{running:!1,paused:!1})})},on:{init:function(e){e.params.autoplay.enabled&&(e.autoplay.start(),r().addEventListener("visibilitychange",e.autoplay.onVisibilityChange),e.autoplay.attachMouseEvents())},beforeTransitionStart:function(e,t,a){e.autoplay.running&&(a||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(t):e.autoplay.stop())},sliderFirstMove:function(e){e.autoplay.running&&(e.params.autoplay.disableOnInteraction?e.autoplay.stop():e.autoplay.pause())},touchEnd:function(e){e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&e.autoplay.run()},destroy:function(e){e.autoplay.detachMouseEvents(),e.autoplay.running&&e.autoplay.stop(),r().removeEventListener("visibilitychange",e.autoplay.onVisibilityChange)}}},{name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create:function(){M(this,{fadeEffect:t({},de)})},on:{beforeInit:function(e){if("fade"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"fade");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"fade"===e.params.effect&&e.fadeEffect.setTranslate()},setTransition:function(e,t){"fade"===e.params.effect&&e.fadeEffect.setTransition(t)}}},{name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create:function(){M(this,{cubeEffect:t({},pe)})},on:{beforeInit:function(e){if("cube"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"cube"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"cube"===e.params.effect&&e.cubeEffect.setTranslate()},setTransition:function(e,t){"cube"===e.params.effect&&e.cubeEffect.setTransition(t)}}},{name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create:function(){M(this,{flipEffect:t({},ue)})},on:{beforeInit:function(e){if("flip"===e.params.effect){e.classNames.push(e.params.containerModifierClass+"flip"),e.classNames.push(e.params.containerModifierClass+"3d");var t={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};S(e.params,t),S(e.originalParams,t)}},setTranslate:function(e){"flip"===e.params.effect&&e.flipEffect.setTranslate()},setTransition:function(e,t){"flip"===e.params.effect&&e.flipEffect.setTransition(t)}}},{name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}},create:function(){M(this,{coverflowEffect:t({},ce)})},on:{beforeInit:function(e){"coverflow"===e.params.effect&&(e.classNames.push(e.params.containerModifierClass+"coverflow"),e.classNames.push(e.params.containerModifierClass+"3d"),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)},setTranslate:function(e){"coverflow"===e.params.effect&&e.coverflowEffect.setTranslate()},setTransition:function(e,t){"coverflow"===e.params.effect&&e.coverflowEffect.setTransition(t)}}},{name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){M(this,{thumbs:t({swiper:null,initialized:!1},he)})},on:{beforeInit:function(e){var t=e.params.thumbs;t&&t.swiper&&(e.thumbs.init(),e.thumbs.update(!0))},slideChange:function(e){e.thumbs.swiper&&e.thumbs.update()},update:function(e){e.thumbs.swiper&&e.thumbs.update()},resize:function(e){e.thumbs.swiper&&e.thumbs.update()},observerUpdate:function(e){e.thumbs.swiper&&e.thumbs.update()},setTransition:function(e,t){var a=e.thumbs.swiper;a&&a.setTransition(t)},beforeDestroy:function(e){var t=e.thumbs.swiper;t&&e.thumbs.swiperCreated&&t&&t.destroy()}}}];return _.use(ve),_})); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/phpmailer/Exception.php b/phpmailer/Exception.php new file mode 100644 index 0000000..52eaf95 --- /dev/null +++ b/phpmailer/Exception.php @@ -0,0 +1,40 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * PHPMailer exception handler. + * + * @author Marcus Bointon + */ +class Exception extends \Exception +{ + /** + * Prettify error message output. + * + * @return string + */ + public function errorMessage() + { + return '' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "
      \n"; + } +} diff --git a/phpmailer/PHPMailer.php b/phpmailer/PHPMailer.php new file mode 100644 index 0000000..d9a3b94 --- /dev/null +++ b/phpmailer/PHPMailer.php @@ -0,0 +1,5024 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2020 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +namespace PHPMailer\PHPMailer; + +/** + * PHPMailer - PHP email creation and transport class. + * + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + */ +class PHPMailer +{ + const CHARSET_ASCII = 'us-ascii'; + const CHARSET_ISO88591 = 'iso-8859-1'; + const CHARSET_UTF8 = 'utf-8'; + + const CONTENT_TYPE_PLAINTEXT = 'text/plain'; + const CONTENT_TYPE_TEXT_CALENDAR = 'text/calendar'; + const CONTENT_TYPE_TEXT_HTML = 'text/html'; + const CONTENT_TYPE_MULTIPART_ALTERNATIVE = 'multipart/alternative'; + const CONTENT_TYPE_MULTIPART_MIXED = 'multipart/mixed'; + const CONTENT_TYPE_MULTIPART_RELATED = 'multipart/related'; + + const ENCODING_7BIT = '7bit'; + const ENCODING_8BIT = '8bit'; + const ENCODING_BASE64 = 'base64'; + const ENCODING_BINARY = 'binary'; + const ENCODING_QUOTED_PRINTABLE = 'quoted-printable'; + + const ENCRYPTION_STARTTLS = 'tls'; + const ENCRYPTION_SMTPS = 'ssl'; + + const ICAL_METHOD_REQUEST = 'REQUEST'; + const ICAL_METHOD_PUBLISH = 'PUBLISH'; + const ICAL_METHOD_REPLY = 'REPLY'; + const ICAL_METHOD_ADD = 'ADD'; + const ICAL_METHOD_CANCEL = 'CANCEL'; + const ICAL_METHOD_REFRESH = 'REFRESH'; + const ICAL_METHOD_COUNTER = 'COUNTER'; + const ICAL_METHOD_DECLINECOUNTER = 'DECLINECOUNTER'; + + /** + * Email priority. + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * + * @var int|null + */ + public $Priority; + + /** + * The character set of the message. + * + * @var string + */ + public $CharSet = self::CHARSET_ISO88591; + + /** + * The MIME Content-type of the message. + * + * @var string + */ + public $ContentType = self::CONTENT_TYPE_PLAINTEXT; + + /** + * The message encoding. + * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". + * + * @var string + */ + public $Encoding = self::ENCODING_8BIT; + + /** + * Holds the most recent mailer error message. + * + * @var string + */ + public $ErrorInfo = ''; + + /** + * The From email address for the message. + * + * @var string + */ + public $From = 'root@localhost'; + + /** + * The From name of the message. + * + * @var string + */ + public $FromName = 'Root User'; + + /** + * The envelope sender of the message. + * This will usually be turned into a Return-Path header by the receiver, + * and is the address that bounces will be sent to. + * If not empty, will be passed via `-f` to sendmail or as the 'MAIL FROM' value over SMTP. + * + * @var string + */ + public $Sender = ''; + + /** + * The Subject of the message. + * + * @var string + */ + public $Subject = ''; + + /** + * An HTML or plain text message body. + * If HTML then call isHTML(true). + * + * @var string + */ + public $Body = ''; + + /** + * The plain-text message body. + * This body can be read by mail clients that do not have HTML email + * capability such as mutt & Eudora. + * Clients that can read HTML will view the normal Body. + * + * @var string + */ + public $AltBody = ''; + + /** + * An iCal message part body. + * Only supported in simple alt or alt_inline message types + * To generate iCal event structures, use classes like EasyPeasyICS or iCalcreator. + * + * @see http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ + * @see http://kigkonsult.se/iCalcreator/ + * + * @var string + */ + public $Ical = ''; + + /** + * Value-array of "method" in Contenttype header "text/calendar" + * + * @var string[] + */ + protected static $IcalMethods = [ + self::ICAL_METHOD_REQUEST, + self::ICAL_METHOD_PUBLISH, + self::ICAL_METHOD_REPLY, + self::ICAL_METHOD_ADD, + self::ICAL_METHOD_CANCEL, + self::ICAL_METHOD_REFRESH, + self::ICAL_METHOD_COUNTER, + self::ICAL_METHOD_DECLINECOUNTER, + ]; + + /** + * The complete compiled MIME message body. + * + * @var string + */ + protected $MIMEBody = ''; + + /** + * The complete compiled MIME message headers. + * + * @var string + */ + protected $MIMEHeader = ''; + + /** + * Extra headers that createHeader() doesn't fold in. + * + * @var string + */ + protected $mailHeader = ''; + + /** + * Word-wrap the message body to this number of chars. + * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. + * + * @see static::STD_LINE_LENGTH + * + * @var int + */ + public $WordWrap = 0; + + /** + * Which method to use to send mail. + * Options: "mail", "sendmail", or "smtp". + * + * @var string + */ + public $Mailer = 'mail'; + + /** + * The path to the sendmail program. + * + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Whether mail() uses a fully sendmail-compatible MTA. + * One which supports sendmail's "-oi -f" options. + * + * @var bool + */ + public $UseSendmailOptions = true; + + /** + * The email address that a reading confirmation should be sent to, also known as read receipt. + * + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * + * @see PHPMailer::$Helo + * + * @var string + */ + public $Hostname = ''; + + /** + * An ID to be used in the Message-ID header. + * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 + * + * @var string + */ + public $MessageID = ''; + + /** + * The message Date to be used in the Date header. + * If empty, the current date will be added. + * + * @var string + */ + public $MessageDate = ''; + + /** + * SMTP hosts. + * Either a single hostname or multiple semicolon-delimited hostnames. + * You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * You can also specify encryption type, for example: + * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). + * Hosts will be tried in order. + * + * @var string + */ + public $Host = 'localhost'; + + /** + * The default SMTP server port. + * + * @var int + */ + public $Port = 25; + + /** + * The SMTP HELO/EHLO name used for the SMTP connection. + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * + * @see PHPMailer::$Hostname + * + * @var string + */ + public $Helo = ''; + + /** + * What kind of encryption to use on the SMTP connection. + * Options: '', static::ENCRYPTION_STARTTLS, or static::ENCRYPTION_SMTPS. + * + * @var string + */ + public $SMTPSecure = ''; + + /** + * Whether to enable TLS encryption automatically if a server supports it, + * even if `SMTPSecure` is not set to 'tls'. + * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. + * + * @var bool + */ + public $SMTPAutoTLS = true; + + /** + * Whether to use SMTP authentication. + * Uses the Username and Password properties. + * + * @see PHPMailer::$Username + * @see PHPMailer::$Password + * + * @var bool + */ + public $SMTPAuth = false; + + /** + * Options array passed to stream_context_create when connecting via SMTP. + * + * @var array + */ + public $SMTPOptions = []; + + /** + * SMTP username. + * + * @var string + */ + public $Username = ''; + + /** + * SMTP password. + * + * @var string + */ + public $Password = ''; + + /** + * SMTP auth type. + * Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified. + * + * @var string + */ + public $AuthType = ''; + + /** + * An instance of the PHPMailer OAuth class. + * + * @var OAuth + */ + protected $oauth; + + /** + * The SMTP server timeout in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. + * + * @var int + */ + public $Timeout = 300; + + /** + * Comma separated list of DSN notifications + * 'NEVER' under no circumstances a DSN must be returned to the sender. + * If you use NEVER all other notifications will be ignored. + * 'SUCCESS' will notify you when your mail has arrived at its destination. + * 'FAILURE' will arrive if an error occurred during delivery. + * 'DELAY' will notify you if there is an unusual delay in delivery, but the actual + * delivery's outcome (success or failure) is not yet decided. + * + * @see https://tools.ietf.org/html/rfc3461 See section 4.1 for more information about NOTIFY + */ + public $dsn = ''; + + /** + * SMTP class debug output mode. + * Debug output level. + * Options: + * @see SMTP::DEBUG_OFF: No output + * @see SMTP::DEBUG_CLIENT: Client messages + * @see SMTP::DEBUG_SERVER: Client and server messages + * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status + * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed + * + * @see SMTP::$do_debug + * + * @var int + */ + public $SMTPDebug = 0; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
      `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * By default PHPMailer will use `echo` if run from a `cli` or `cli-server` SAPI, `html` otherwise. + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * ```php + * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * ``` + * + * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` + * level output is used: + * + * ```php + * $mail->Debugoutput = new myPsr3Logger; + * ``` + * + * @see SMTP::$Debugoutput + * + * @var string|callable|\Psr\Log\LoggerInterface + */ + public $Debugoutput = 'echo'; + + /** + * Whether to keep the SMTP connection open after each message. + * If this is set to true then the connection will remain open after a send, + * and closing the connection will require an explicit call to smtpClose(). + * It's a good idea to use this if you are sending multiple messages as it reduces overhead. + * See the mailing list example for how to use it. + * + * @var bool + */ + public $SMTPKeepAlive = false; + + /** + * Whether to split multiple to addresses into multiple messages + * or send them all in one message. + * Only supported in `mail` and `sendmail` transports, not in SMTP. + * + * @var bool + * + * @deprecated 6.0.0 PHPMailer isn't a mailing list manager! + */ + public $SingleTo = false; + + /** + * Storage for addresses when SingleTo is enabled. + * + * @var array + */ + protected $SingleToArray = []; + + /** + * Whether to generate VERP addresses on send. + * Only applicable when sending via SMTP. + * + * @see https://en.wikipedia.org/wiki/Variable_envelope_return_path + * @see http://www.postfix.org/VERP_README.html Postfix VERP info + * + * @var bool + */ + public $do_verp = false; + + /** + * Whether to allow sending messages with an empty body. + * + * @var bool + */ + public $AllowEmpty = false; + + /** + * DKIM selector. + * + * @var string + */ + public $DKIM_selector = ''; + + /** + * DKIM Identity. + * Usually the email address used as the source of the email. + * + * @var string + */ + public $DKIM_identity = ''; + + /** + * DKIM passphrase. + * Used if your key is encrypted. + * + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * DKIM signing domain name. + * + * @example 'example.com' + * + * @var string + */ + public $DKIM_domain = ''; + + /** + * DKIM Copy header field values for diagnostic use. + * + * @var bool + */ + public $DKIM_copyHeaderFields = true; + + /** + * DKIM Extra signing headers. + * + * @example ['List-Unsubscribe', 'List-Help'] + * + * @var array + */ + public $DKIM_extraHeaders = []; + + /** + * DKIM private key file path. + * + * @var string + */ + public $DKIM_private = ''; + + /** + * DKIM private key string. + * + * If set, takes precedence over `$DKIM_private`. + * + * @var string + */ + public $DKIM_private_string = ''; + + /** + * Callback Action function name. + * + * The function that handles the result of the send email action. + * It is called out by send() for each email sent. + * + * Value can be any php callable: http://www.php.net/is_callable + * + * Parameters: + * bool $result result of the send action + * array $to email addresses of the recipients + * array $cc cc email addresses + * array $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * string $from email address of sender + * string $extra extra information of possible use + * "smtp_transaction_id' => last smtp transaction id + * + * @var string + */ + public $action_function = ''; + + /** + * What to put in the X-Mailer header. + * Options: An empty string for PHPMailer default, whitespace/null for none, or a string to use. + * + * @var string|null + */ + public $XMailer = ''; + + /** + * Which validator to use by default when validating email addresses. + * May be a callable to inject your own validator, but there are several built-in validators. + * The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option. + * + * @see PHPMailer::validateAddress() + * + * @var string|callable + */ + public static $validator = 'php'; + + /** + * An instance of the SMTP sender class. + * + * @var SMTP + */ + protected $smtp; + + /** + * The array of 'to' names and addresses. + * + * @var array + */ + protected $to = []; + + /** + * The array of 'cc' names and addresses. + * + * @var array + */ + protected $cc = []; + + /** + * The array of 'bcc' names and addresses. + * + * @var array + */ + protected $bcc = []; + + /** + * The array of reply-to names and addresses. + * + * @var array + */ + protected $ReplyTo = []; + + /** + * An array of all kinds of addresses. + * Includes all of $to, $cc, $bcc. + * + * @see PHPMailer::$to + * @see PHPMailer::$cc + * @see PHPMailer::$bcc + * + * @var array + */ + protected $all_recipients = []; + + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * + * @see PHPMailer::$to + * @see PHPMailer::$cc + * @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + * + * @var array + */ + protected $RecipientsQueue = []; + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * + * @see PHPMailer::$ReplyTo + * + * @var array + */ + protected $ReplyToQueue = []; + + /** + * The array of attachments. + * + * @var array + */ + protected $attachment = []; + + /** + * The array of custom headers. + * + * @var array + */ + protected $CustomHeader = []; + + /** + * The most recent Message-ID (including angular brackets). + * + * @var string + */ + protected $lastMessageID = ''; + + /** + * The message's MIME type. + * + * @var string + */ + protected $message_type = ''; + + /** + * The array of MIME boundary strings. + * + * @var array + */ + protected $boundary = []; + + /** + * The array of available text strings for the current language. + * + * @var array + */ + protected $language = []; + + /** + * The number of errors encountered. + * + * @var int + */ + protected $error_count = 0; + + /** + * The S/MIME certificate file path. + * + * @var string + */ + protected $sign_cert_file = ''; + + /** + * The S/MIME key file path. + * + * @var string + */ + protected $sign_key_file = ''; + + /** + * The optional S/MIME extra certificates ("CA Chain") file path. + * + * @var string + */ + protected $sign_extracerts_file = ''; + + /** + * The S/MIME password for the key. + * Used only if the key is encrypted. + * + * @var string + */ + protected $sign_key_pass = ''; + + /** + * Whether to throw exceptions for errors. + * + * @var bool + */ + protected $exceptions = false; + + /** + * Unique ID used for message ID and boundaries. + * + * @var string + */ + protected $uniqueid = ''; + + /** + * The PHPMailer Version number. + * + * @var string + */ + const VERSION = '6.5.0'; + + /** + * Error severity: message only, continue processing. + * + * @var int + */ + const STOP_MESSAGE = 0; + + /** + * Error severity: message, likely ok to continue processing. + * + * @var int + */ + const STOP_CONTINUE = 1; + + /** + * Error severity: message, plus full stop, critical error reached. + * + * @var int + */ + const STOP_CRITICAL = 2; + + /** + * The SMTP standard CRLF line break. + * If you want to change line break format, change static::$LE, not this. + */ + const CRLF = "\r\n"; + + /** + * "Folding White Space" a white space string used for line folding. + */ + const FWS = ' '; + + /** + * SMTP RFC standard line ending; Carriage Return, Line Feed. + * + * @var string + */ + protected static $LE = self::CRLF; + + /** + * The maximum line length supported by mail(). + * + * Background: mail() will sometimes corrupt messages + * with headers headers longer than 65 chars, see #818. + * + * @var int + */ + const MAIL_MAX_LINE_LENGTH = 63; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1. + * + * @var int + */ + const MAX_LINE_LENGTH = 998; + + /** + * The lower maximum line length allowed by RFC 2822 section 2.1.1. + * This length does NOT include the line break + * 76 means that lines will be 77 or 78 chars depending on whether + * the line break format is LF or CRLF; both are valid. + * + * @var int + */ + const STD_LINE_LENGTH = 76; + + /** + * Constructor. + * + * @param bool $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = null) + { + if (null !== $exceptions) { + $this->exceptions = (bool) $exceptions; + } + //Pick an appropriate debug output format automatically + $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html'); + } + + /** + * Destructor. + */ + public function __destruct() + { + //Close any open SMTP connection nicely + $this->smtpClose(); + } + + /** + * Call mail() in a safe_mode-aware fashion. + * Also, unless sendmail_path points to sendmail (or something that + * claims to be sendmail), don't pass params (not a perfect fix, + * but it will do). + * + * @param string $to To + * @param string $subject Subject + * @param string $body Message Body + * @param string $header Additional Header(s) + * @param string|null $params Params + * + * @return bool + */ + private function mailPassthru($to, $subject, $body, $header, $params) + { + //Check overloading of mail function to avoid double-encoding + if (ini_get('mbstring.func_overload') & 1) { + $subject = $this->secureHeader($subject); + } else { + $subject = $this->encodeHeader($this->secureHeader($subject)); + } + //Calling mail() with null params breaks + $this->edebug('Sending with mail()'); + $this->edebug('Sendmail path: ' . ini_get('sendmail_path')); + $this->edebug("Envelope sender: {$this->Sender}"); + $this->edebug("To: {$to}"); + $this->edebug("Subject: {$subject}"); + $this->edebug("Headers: {$header}"); + if (!$this->UseSendmailOptions || null === $params) { + $result = @mail($to, $subject, $body, $header); + } else { + $this->edebug("Additional params: {$params}"); + $result = @mail($to, $subject, $body, $header, $params); + } + $this->edebug('Result: ' . ($result ? 'true' : 'false')); + return $result; + } + + /** + * Output debugging info via a user-defined method. + * Only generates output if debug output is enabled. + * + * @see PHPMailer::$Debugoutput + * @see PHPMailer::$SMTPDebug + * + * @param string $str + */ + protected function edebug($str) + { + if ($this->SMTPDebug <= 0) { + return; + } + //Is this a PSR-3 logger? + if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { + $this->Debugoutput->debug($str); + + return; + } + //Avoid clash with built-in function names + if (is_callable($this->Debugoutput) && !in_array($this->Debugoutput, ['error_log', 'html', 'echo'])) { + call_user_func($this->Debugoutput, $str, $this->SMTPDebug); + + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + /** @noinspection ForgottenDebugOutputInspection */ + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ), "
      \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/\r\n|\r/m', "\n", $str); + echo gmdate('Y-m-d H:i:s'), + "\t", + //Trim trailing space + trim( + //Indent for readability, except for trailing break + str_replace( + "\n", + "\n \t ", + trim($str) + ) + ), + "\n"; + } + } + + /** + * Sets message type to HTML or plain. + * + * @param bool $isHtml True for HTML mode + */ + public function isHTML($isHtml = true) + { + if ($isHtml) { + $this->ContentType = static::CONTENT_TYPE_TEXT_HTML; + } else { + $this->ContentType = static::CONTENT_TYPE_PLAINTEXT; + } + } + + /** + * Send messages using SMTP. + */ + public function isSMTP() + { + $this->Mailer = 'smtp'; + } + + /** + * Send messages using PHP's mail() function. + */ + public function isMail() + { + $this->Mailer = 'mail'; + } + + /** + * Send messages using $Sendmail. + */ + public function isSendmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (false === stripos($ini_sendmail_path, 'sendmail')) { + $this->Sendmail = '/usr/sbin/sendmail'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'sendmail'; + } + + /** + * Send messages using qmail. + */ + public function isQmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (false === stripos($ini_sendmail_path, 'qmail')) { + $this->Sendmail = '/var/qmail/bin/qmail-inject'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'qmail'; + } + + /** + * Add a "To" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addAddress($address, $name = '') + { + return $this->addOrEnqueueAnAddress('to', $address, $name); + } + + /** + * Add a "CC" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('cc', $address, $name); + } + + /** + * Add a "BCC" address. + * + * @param string $address The email address to send to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addBCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('bcc', $address, $name); + } + + /** + * Add a "Reply-To" address. + * + * @param string $address The email address to reply to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + public function addReplyTo($address, $name = '') + { + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + $pos = strrpos($address, '@'); + if (false === $pos) { + //At-sign is missing. + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $kind, + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + $params = [$kind, $address, $name]; + //Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) { + if ('Reply-To' !== $kind) { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + + return true; + } + } elseif (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + + return true; + } + + return false; + } + + //Immediately add standard addresses without IDN. + return call_user_func_array([$this, 'addAnAddress'], $params); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * + * @throws Exception + * + * @return bool true on success, false if address already used or invalid in some way + */ + protected function addAnAddress($kind, $address, $name = '') + { + if (!in_array($kind, ['to', 'cc', 'bcc', 'Reply-To'])) { + $error_message = sprintf( + '%s: %s', + $this->lang('Invalid recipient kind'), + $kind + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + if (!static::validateAddress($address)) { + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $kind, + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + if ('Reply-To' !== $kind) { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { + $this->{$kind}[] = [$address, $name]; + $this->all_recipients[strtolower($address)] = true; + + return true; + } + } elseif (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = [$address, $name]; + + return true; + } + + return false; + } + + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
      " into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * + * @see http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + * + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * + * @return array + */ + public static function parseAddresses($addrstr, $useimap = true, $charset = self::CHARSET_ISO88591) + { + $addresses = []; + if ($useimap && function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + // Clear any potential IMAP errors to get rid of notices begin thrown at end of script. + imap_errors(); + foreach ($list as $address) { + if ( + ('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress( + $address->mailbox . '@' . $address->host + ) + ) { + //Decode the name part if it's present and encoded + if ( + property_exists($address, 'personal') && + //Check for a Mbstring constant rather than using extension_loaded, which is sometimes disabled + defined('MB_CASE_UPPER') && + preg_match('/^=\?.*\?=$/', $address->personal) + ) { + $origCharset = mb_internal_encoding(); + mb_internal_encoding($charset); + $address->personal = mb_decode_mimeheader($address->personal); + mb_internal_encoding($origCharset); + } + + $addresses[] = [ + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host, + ]; + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if (static::validateAddress($address)) { + $addresses[] = [ + 'name' => '', + 'address' => $address, + ]; + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + $name = trim($name); + if (static::validateAddress($email)) { + //Check for a Mbstring constant rather than using extension_loaded, which is sometimes disabled + //If this name is encoded, decode it + if (defined('MB_CASE_UPPER') && preg_match('/^=\?.*\?=$/', $name)) { + $origCharset = mb_internal_encoding(); + mb_internal_encoding($charset); + $name = mb_decode_mimeheader($name); + mb_internal_encoding($origCharset); + } + $addresses[] = [ + //Remove any surrounding quotes and spaces from the name + 'name' => trim($name, '\'" '), + 'address' => $email, + ]; + } + } + } + } + + return $addresses; + } + + /** + * Set the From and FromName properties. + * + * @param string $address + * @param string $name + * @param bool $auto Whether to also set the Sender address, defaults to true + * + * @throws Exception + * + * @return bool + */ + public function setFrom($address, $name = '', $auto = true) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + //Don't validate now addresses with IDN. Will be done in send(). + $pos = strrpos($address, '@'); + if ( + (false === $pos) + || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported()) + && !static::validateAddress($address)) + ) { + $error_message = sprintf( + '%s (From): %s', + $this->lang('invalid_address'), + $address + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto && empty($this->Sender)) { + $this->Sender = $address; + } + + return true; + } + + /** + * Return the Message-ID header of the last email. + * Technically this is the value from the last time the headers were created, + * but it's also the message ID of the last sent message except in + * pathological cases. + * + * @return string + */ + public function getLastMessageID() + { + return $this->lastMessageID; + } + + /** + * Check that a string looks like an email address. + * Validation patterns supported: + * * `auto` Pick best pattern automatically; + * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0; + * * `pcre` Use old PCRE implementation; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; + * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. + * * `noregex` Don't use a regex: super fast, really dumb. + * Alternatively you may pass in a callable to inject your own validator, for example: + * + * ```php + * PHPMailer::validateAddress('user@example.com', function($address) { + * return (strpos($address, '@') !== false); + * }); + * ``` + * + * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. + * + * @param string $address The email address to check + * @param string|callable $patternselect Which pattern to use + * + * @return bool + */ + public static function validateAddress($address, $patternselect = null) + { + if (null === $patternselect) { + $patternselect = static::$validator; + } + //Don't allow strings as callables, see SECURITY.md and CVE-2021-3603 + if (is_callable($patternselect) && !is_string($patternselect)) { + return call_user_func($patternselect, $address); + } + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) { + return false; + } + switch ($patternselect) { + case 'pcre': //Kept for BC + case 'pcre8': + /* + * A more complex and more permissive version of the RFC5322 regex on which FILTER_VALIDATE_EMAIL + * is based. + * In addition to the addresses allowed by filter_var, also permits: + * * dotless domains: `a@b` + * * comments: `1234 @ local(blah) .machine .example` + * * quoted elements: `'"test blah"@example.org'` + * * numeric TLDs: `a@b.123` + * * unbracketed IPv4 literals: `a@192.168.0.1` + * * IPv6 literals: 'first.last@[IPv6:a1::]' + * Not all of these will necessarily work for sending! + * + * @see http://squiloople.com/2009/12/20/email-address-validation/ + * @copyright 2009-2010 Michael Rushton + * Feel free to use and redistribute this code. But please keep this copyright notice. + */ + return (bool) preg_match( + '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . + '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . + '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . + '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . + '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . + '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . + '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . + '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', + $address + ); + case 'html5': + /* + * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. + * + * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) + */ + return (bool) preg_match( + '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . + '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', + $address + ); + case 'php': + default: + return filter_var($address, FILTER_VALIDATE_EMAIL) !== false; + } + } + + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * `intl` and `mbstring` PHP extensions. + * + * @return bool `true` if required functions for IDN support are present + */ + public static function idnSupported() + { + return function_exists('idn_to_ascii') && function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain contains characters not allowed in an IDN). + * + * @see PHPMailer::$CharSet + * + * @param string $address The email address to convert + * + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + //Verify we have required functions, CharSet, and at-sign. + $pos = strrpos($address, '@'); + if ( + !empty($this->CharSet) && + false !== $pos && + static::idnSupported() + ) { + $domain = substr($address, ++$pos); + //Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) { + //Convert the domain from whatever charset it's in to UTF-8 + $domain = mb_convert_encoding($domain, self::CHARSET_UTF8, $this->CharSet); + //Ignore IDE complaints about this line - method signature changed in PHP 5.4 + $errorcode = 0; + if (defined('INTL_IDNA_VARIANT_UTS46')) { + //Use the current punycode standard (appeared in PHP 7.2) + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_UTS46); + } elseif (defined('INTL_IDNA_VARIANT_2003')) { + //Fall back to this old, deprecated/removed encoding + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_2003); + } else { + //Fall back to a default we don't know about + $punycode = idn_to_ascii($domain, $errorcode); + } + if (false !== $punycode) { + return substr($address, 0, $pos) . $punycode; + } + } + } + + return $address; + } + + /** + * Create a message and send it. + * Uses the sending method specified by $Mailer. + * + * @throws Exception + * + * @return bool false on error - See the ErrorInfo property for details of the error + */ + public function send() + { + try { + if (!$this->preSend()) { + return false; + } + + return $this->postSend(); + } catch (Exception $exc) { + $this->mailHeader = ''; + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + + return false; + } + } + + /** + * Prepare a message for sending. + * + * @throws Exception + * + * @return bool + */ + public function preSend() + { + if ( + 'smtp' === $this->Mailer + || ('mail' === $this->Mailer && (\PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) + ) { + //SMTP mandates RFC-compliant line endings + //and it's also used with mail() on Windows + static::setLE(self::CRLF); + } else { + //Maintain backward compatibility with legacy Linux command line mailers + static::setLE(PHP_EOL); + } + //Check for buggy PHP versions that add a header with an incorrect line break + if ( + 'mail' === $this->Mailer + && ((\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70017) + || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70103)) + && ini_get('mail.add_x_header') === '1' + && stripos(PHP_OS, 'WIN') === 0 + ) { + trigger_error($this->lang('buggy_php'), E_USER_WARNING); + } + + try { + $this->error_count = 0; //Reset errors + $this->mailHeader = ''; + + //Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array([$this, 'addAnAddress'], $params); + } + if (count($this->to) + count($this->cc) + count($this->bcc) < 1) { + throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL); + } + + //Validate From, Sender, and ConfirmReadingTo addresses + foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { + $this->$address_kind = trim($this->$address_kind); + if (empty($this->$address_kind)) { + continue; + } + $this->$address_kind = $this->punyencodeAddress($this->$address_kind); + if (!static::validateAddress($this->$address_kind)) { + $error_message = sprintf( + '%s (%s): %s', + $this->lang('invalid_address'), + $address_kind, + $this->$address_kind + ); + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new Exception($error_message); + } + + return false; + } + } + + //Set whether the message is multipart/alternative + if ($this->alternativeExists()) { + $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE; + } + + $this->setMessageType(); + //Refuse to send an empty message unless we are specifically allowing it + if (!$this->AllowEmpty && empty($this->Body)) { + throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); + } + + //Trim subject consistently + $this->Subject = trim($this->Subject); + //Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + $this->MIMEHeader = ''; + $this->MIMEBody = $this->createBody(); + //createBody may have added some headers, so retain them + $tempheaders = $this->MIMEHeader; + $this->MIMEHeader = $this->createHeader(); + $this->MIMEHeader .= $tempheaders; + + //To capture the complete message when using mail(), create + //an extra header list which createHeader() doesn't fold in + if ('mail' === $this->Mailer) { + if (count($this->to) > 0) { + $this->mailHeader .= $this->addrAppend('To', $this->to); + } else { + $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + $this->mailHeader .= $this->headerLine( + 'Subject', + $this->encodeHeader($this->secureHeader($this->Subject)) + ); + } + + //Sign with DKIM if enabled + if ( + !empty($this->DKIM_domain) + && !empty($this->DKIM_selector) + && (!empty($this->DKIM_private_string) + || (!empty($this->DKIM_private) + && static::isPermittedPath($this->DKIM_private) + && file_exists($this->DKIM_private) + ) + ) + ) { + $header_dkim = $this->DKIM_Add( + $this->MIMEHeader . $this->mailHeader, + $this->encodeHeader($this->secureHeader($this->Subject)), + $this->MIMEBody + ); + $this->MIMEHeader = static::stripTrailingWSP($this->MIMEHeader) . static::$LE . + static::normalizeBreaks($header_dkim) . static::$LE; + } + + return true; + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + + return false; + } + } + + /** + * Actually send a message via the selected mechanism. + * + * @throws Exception + * + * @return bool + */ + public function postSend() + { + try { + //Choose the mailer and send through it + switch ($this->Mailer) { + case 'sendmail': + case 'qmail': + return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); + case 'mail': + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + default: + $sendMethod = $this->Mailer . 'Send'; + if (method_exists($this, $sendMethod)) { + return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); + } + + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + } + } catch (Exception $exc) { + if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) { + $this->smtp->reset(); + } + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + } + + return false; + } + + /** + * Send mail using the $Sendmail program. + * + * @see PHPMailer::$Sendmail + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function sendmailSend($header, $body) + { + if ($this->Mailer === 'qmail') { + $this->edebug('Sending with qmail'); + } else { + $this->edebug('Sending with sendmail'); + } + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { + if ($this->Mailer === 'qmail') { + $sendmailFmt = '%s -f%s'; + } else { + $sendmailFmt = '%s -oi -f%s -t'; + } + } else { + //allow sendmail to choose a default envelope sender. It may + //seem preferable to force it to use the From header as with + //SMTP, but that introduces new problems (see + //), and + //it has historically worked this way. + $sendmailFmt = '%s -oi -t'; + } + + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + $this->edebug('Sendmail path: ' . $this->Sendmail); + $this->edebug('Sendmail command: ' . $sendmail); + $this->edebug('Envelope sender: ' . $this->Sender); + $this->edebug("Headers: {$header}"); + + if ($this->SingleTo) { + foreach ($this->SingleToArray as $toAddr) { + $mail = @popen($sendmail, 'w'); + if (!$mail) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + $this->edebug("To: {$toAddr}"); + fwrite($mail, 'To: ' . $toAddr . "\n"); + fwrite($mail, $header); + fwrite($mail, $body); + $result = pclose($mail); + $addrinfo = static::parseAddresses($toAddr, true, $this->charSet); + $this->doCallback( + ($result === 0), + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); + if (0 !== $result) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + $mail = @popen($sendmail, 'w'); + if (!$mail) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fwrite($mail, $header); + fwrite($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result === 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); + if (0 !== $result) { + throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + + return true; + } + + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * + * @param string $string The string to be validated + * + * @return bool + */ + protected static function isShellSafe($string) + { + //Future-proof + if ( + escapeshellcmd($string) !== $string + || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; ++$i) { + $c = $string[$i]; + + //All other characters have a special meaning in at least one common shell, including = and +. + //Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + //Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + + /** + * Check whether a file path is of a permitted type. + * Used to reject URLs and phar files from functions that access local file paths, + * such as addAttachment. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function isPermittedPath($path) + { + //Matches scheme definition from https://tools.ietf.org/html/rfc3986#section-3.1 + return !preg_match('#^[a-z][a-z\d+.-]*://#i', $path); + } + + /** + * Check whether a file path is safe, accessible, and readable. + * + * @param string $path A relative or absolute path to a file + * + * @return bool + */ + protected static function fileIsAccessible($path) + { + if (!static::isPermittedPath($path)) { + return false; + } + $readable = file_exists($path); + //If not a UNC path (expected to start with \\), check read permission, see #2069 + if (strpos($path, '\\\\') !== 0) { + $readable = $readable && is_readable($path); + } + return $readable; + } + + /** + * Send mail using the PHP mail() function. + * + * @see http://www.php.net/manual/en/book.mail.php + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function mailSend($header, $body) + { + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + + $toArr = []; + foreach ($this->to as $toaddr) { + $toArr[] = $this->addrFormat($toaddr); + } + $to = implode(', ', $toArr); + + $params = null; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + if (!empty($this->Sender) && static::validateAddress($this->Sender)) { + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + } + $result = false; + if ($this->SingleTo && count($toArr) > 1) { + foreach ($toArr as $toAddr) { + $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); + $addrinfo = static::parseAddresses($toAddr, true, $this->charSet); + $this->doCallback( + $result, + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); + } + } else { + $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); + $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if (!$result) { + throw new Exception($this->lang('instantiate'), self::STOP_CRITICAL); + } + + return true; + } + + /** + * Get an instance to use for SMTP operations. + * Override this function to load your own SMTP implementation, + * or set one with setSMTPInstance. + * + * @return SMTP + */ + public function getSMTPInstance() + { + if (!is_object($this->smtp)) { + $this->smtp = new SMTP(); + } + + return $this->smtp; + } + + /** + * Provide an instance to use for SMTP operations. + * + * @return SMTP + */ + public function setSMTPInstance(SMTP $smtp) + { + $this->smtp = $smtp; + + return $this->smtp; + } + + /** + * Send mail via SMTP. + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * + * @see PHPMailer::setSMTPInstance() to use a different class. + * + * @uses \PHPMailer\PHPMailer\SMTP + * + * @param string $header The message headers + * @param string $body The message body + * + * @throws Exception + * + * @return bool + */ + protected function smtpSend($header, $body) + { + $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; + $bad_rcpt = []; + if (!$this->smtpConnect($this->SMTPOptions)) { + throw new Exception($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + //Sender already validated in preSend() + if ('' === $this->Sender) { + $smtp_from = $this->From; + } else { + $smtp_from = $this->Sender; + } + if (!$this->smtp->mail($smtp_from)) { + $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); + throw new Exception($this->ErrorInfo, self::STOP_CRITICAL); + } + + $callbacks = []; + //Attempt to send to all recipients + foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { + foreach ($togroup as $to) { + if (!$this->smtp->recipient($to[0], $this->dsn)) { + $error = $this->smtp->getError(); + $bad_rcpt[] = ['to' => $to[0], 'error' => $error['detail']]; + $isSent = false; + } else { + $isSent = true; + } + + $callbacks[] = ['issent' => $isSent, 'to' => $to[0], 'name' => $to[1]]; + } + } + + //Only send the DATA command if we have viable recipients + if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) { + throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); + } + + $smtp_transaction_id = $this->smtp->getLastTransactionID(); + + if ($this->SMTPKeepAlive) { + $this->smtp->reset(); + } else { + $this->smtp->quit(); + $this->smtp->close(); + } + + foreach ($callbacks as $cb) { + $this->doCallback( + $cb['issent'], + [[$cb['to'], $cb['name']]], + [], + [], + $this->Subject, + $body, + $this->From, + ['smtp_transaction_id' => $smtp_transaction_id] + ); + } + + //Create error message for any bad addresses + if (count($bad_rcpt) > 0) { + $errstr = ''; + foreach ($bad_rcpt as $bad) { + $errstr .= $bad['to'] . ': ' . $bad['error']; + } + throw new Exception($this->lang('recipients_failed') . $errstr, self::STOP_CONTINUE); + } + + return true; + } + + /** + * Initiate a connection to an SMTP server. + * Returns false if the operation failed. + * + * @param array $options An array of options compatible with stream_context_create() + * + * @throws Exception + * + * @uses \PHPMailer\PHPMailer\SMTP + * + * @return bool + */ + public function smtpConnect($options = null) + { + if (null === $this->smtp) { + $this->smtp = $this->getSMTPInstance(); + } + + //If no options are provided, use whatever is set in the instance + if (null === $options) { + $options = $this->SMTPOptions; + } + + //Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = []; + if ( + !preg_match( + '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', + trim($hostentry), + $hostinfo + ) + ) { + $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); + //Not a valid host entry + continue; + } + //$hostinfo[1]: optional ssl or tls prefix + //$hostinfo[2]: the hostname + //$hostinfo[3]: optional port number + //The host string prefix can temporarily override the current setting for SMTPSecure + //If it's not specified, the default value is used + + //Check the host name is a valid name or IP address before trying to use it + if (!static::isValidHost($hostinfo[2])) { + $this->edebug($this->lang('invalid_host') . ' ' . $hostinfo[2]); + continue; + } + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure); + if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; //Can't have SSL and TLS at the same time + $secure = static::ENCRYPTION_SMTPS; + } elseif ('tls' === $hostinfo[1]) { + $tls = true; + //TLS doesn't use a prefix + $secure = static::ENCRYPTION_STARTTLS; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA256'); + if (static::ENCRYPTION_STARTTLS === $secure || static::ENCRYPTION_SMTPS === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new Exception($this->lang('extension_missing') . 'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[2]; + $port = $this->Port; + if ( + array_key_exists(3, $hostinfo) && + is_numeric($hostinfo[3]) && + $hostinfo[3] > 0 && + $hostinfo[3] < 65536 + ) { + $port = (int) $hostinfo[3]; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + //* it's not disabled + //* we have openssl extension + //* we are not already using SSL + //* the server offers STARTTLS + if ($this->SMTPAutoTLS && $sslext && 'ssl' !== $secure && $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new Exception($this->lang('connect_host')); + } + //We must resend EHLO after TLS negotiation + $this->smtp->hello($hello); + } + if ( + $this->SMTPAuth && !$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->oauth + ) + ) { + throw new Exception($this->lang('authenticate')); + } + + return true; + } catch (Exception $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + //We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + //If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + //As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions && null !== $lastexception) { + throw $lastexception; + } + + return false; + } + + /** + * Close the active SMTP session if one exists. + */ + public function smtpClose() + { + if ((null !== $this->smtp) && $this->smtp->connected()) { + $this->smtp->quit(); + $this->smtp->close(); + } + } + + /** + * Set the language for error messages. + * The default language is English. + * + * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") + * Optionally, the language code can be enhanced with a 4-character + * script annotation and/or a 2-character country annotation. + * @param string $lang_path Path to the language file directory, with trailing separator (slash).D + * Do not set this from user input! + * + * @return bool Returns true if the requested language was loaded, false otherwise. + */ + public function setLanguage($langcode = 'en', $lang_path = '') + { + //Backwards compatibility for renamed language codes + $renamed_langcodes = [ + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + 'rs' => 'sr', + 'tg' => 'tl', + 'am' => 'hy', + ]; + + if (array_key_exists($langcode, $renamed_langcodes)) { + $langcode = $renamed_langcodes[$langcode]; + } + + //Define full set of translatable strings in English + $PHPMAILER_LANG = [ + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'buggy_php' => 'Your version of PHP is affected by a bug that may result in corrupted messages.' . + ' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in' . + ' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'data_not_accepted' => 'SMTP Error: data not accepted.', + 'empty_message' => 'Message body empty', + 'encoding' => 'Unknown encoding: ', + 'execute' => 'Could not execute: ', + 'extension_missing' => 'Extension missing: ', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'from_failed' => 'The following From address failed: ', + 'instantiate' => 'Could not instantiate mail function.', + 'invalid_address' => 'Invalid address: ', + 'invalid_header' => 'Invalid header name or value', + 'invalid_hostentry' => 'Invalid hostentry: ', + 'invalid_host' => 'Invalid host: ', + 'mailer_not_supported' => ' mailer is not supported.', + 'provide_address' => 'You must provide at least one recipient email address.', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'signing' => 'Signing Error: ', + 'smtp_code' => 'SMTP code: ', + 'smtp_code_ex' => 'Additional SMTP info: ', + 'smtp_connect_failed' => 'SMTP connect() failed.', + 'smtp_detail' => 'Detail: ', + 'smtp_error' => 'SMTP server error: ', + 'variable_set' => 'Cannot set or reset variable: ', + ]; + if (empty($lang_path)) { + //Calculate an absolute path so it can work if CWD is not here + $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; + } + + //Validate $langcode + $foundlang = true; + $langcode = strtolower($langcode); + if ( + !preg_match('/^(?P[a-z]{2})(?P + + + + + +